在使用git的過程中,有時可能會有一些誤操作,比如:執行checkout -f 或 reset -hard 或 branch -d刪除乙個分支,結果造成本地(遠端)的分支或某些commit丟失。這時,我們可以通過reflog來進行恢復,前提是丟失的分支或commit資訊沒有被git gc(cd30天)清除。一般情況下,gc對那些無用的object會保留很長時間後才清除的。reflog是git提供的乙個內部工具,用於記錄對git倉庫進行的各種操作,可以使用git reflog或git log -g命令來看到所有的操作日誌。1.1 通過 git log -g 命令來找到我們需要恢復的資訊對應的commit_id,可以通過提交的 版本id,注備,時間,日期來辨別(黑色處為個人隱私)。
1.3 這樣丟失的東西會恢復到reserve_branch 分支上了,然後切換到reserve_branch分支,一會檔案就被開發工具檢查到,可以用git push origin head -u將本地分支推送到遠端~
在專案開發過程中,突然心血來潮想把某些目錄或檔案加入忽略規則,按照上述方法定義後發現並未生效,原因是.gitignore只能忽略那些原來沒有被track的檔案.如果某些檔案已經被納入了版本管理中,則修改.gitignore是無效的。那麼解決方法就是先把本地快取刪除(改變成未track狀態),然後再提交(藍色檔案為加入了版本控制的,灰色為.gitgnore過濾後的不可新增版本控制):
$ git rm -r --cached .# 1.清理本地快取(改變成未被追蹤狀態)
# 2.把工作時的所有變化提交到暫存區 :
包括檔案內容修改(modified)以及新檔案(new),但不包括被刪除的檔案。(會通過 .gitgnore 過濾)
$ git add .
# 3.將快取區更新到本地倉庫
$ git commit -m 『update .gitignore』
https_git連線方式 :https其實是有兩部分組成:http + ssl / tls,也就是在http上又加了一層處理加密資訊的模組。服務端和客戶端的資訊傳輸都會通過 ssl / tls 進行加密,所以傳輸的資料都是加密後的資料。具體是如何進行加密,解密,驗證的,且看下圖。詳細參考位址!!!:
ssh_git連線方式 (安全外殼傳輸協議):用非對稱加密(rsa)演算法進行傳輸,使用非對稱加密(rsa)演算法需要兩個金鑰:公開金鑰(publickey)和私有金鑰(privatekey)。公開金鑰與私有金鑰是一對,如果用公開金鑰對資料進行加密,只有用對應的私有金鑰才能解密;如果用私有金鑰對資料進行簽名,那麼只有用對應的公開金鑰才能檢驗。因為加密和解密使用的是兩個不同的金鑰,所以這種演算法叫作非對稱加密演算法,可防止資料傳輸時被第三方截獲後修改。ssh連線: 在電腦上生成公鑰與私鑰,並告知給本地和**託管平台,本地git客戶端在push時會用私鑰簽名,**託管平台會用公鑰檢驗,pull時**託管平台會用公鑰加密.然後本地git客戶端會用私鑰解密,這就是ssh公私鑰加密演算法~詳細參考位址 :
(rsa演算法)效能是非常低的, 原因在於尋找大素數、大數計算、資料分割需要耗費很多的cpu週期 , 但是安全性很高。
https連線 :ssl介於應用層和tcp層之間。應用層資料不再直接傳遞給傳輸層,而是傳遞給ssl層,ssl層對從應用層收到的資料進行加密,並增加自己的ssl頭。只在第一次握手時使用非對稱加密,通過握手交換對稱加密金鑰,在之後的通訊走對稱加密tls/ssl中使用了非對稱加密,對稱加密以及hash演算法。。
1.1在本地生成ssh 公鑰與私鑰~首先確保你的伺服器已經成功設定自己的使用者名稱和使用者郵箱
git config --global user.name "yourname"
git config --global user.email "[email protected]"
設定成功後(根據使用者名稱和郵箱生成公鑰與私鑰)!!!
ssh-keygen -t rsa -c 「**託管平台的郵箱@qq.com」
按3個回車,密碼為空,大功告成。
1.2.
cat ~/.ssh/id_rsa.pub
:檢視是否已經有了ssh公鑰1.3. [在**託管平台新增ssh公鑰: 把公鑰複製進ssh公鑰管理]
clip < ~/.ssh/id_rsa.pub
執行後將公鑰被copy在剪下板上,ctrl+v到公鑰鑰管理處
1.4.告知私鑰到本地
ssh-add ~/.ssh/id_rsa
如果在這個過程中出現異常[could not open a connection to your ]:
(!!!注意: ssh-agent 周圍加上兩個` ,markdown語法無法顯示雙點!!!)
執行
eval ssh-agent
再次執行
ssh-add ~/.ssh/id_rsa
成功 ssh-add -l 檢視 如果有新加的rsa出現就ok:1.5.測試:(注意 [email protected]為本人的**託管平台)
ssh -t [email protected]
**(git@你的**託管平台**) **若返回:welcome to git@osc, 「使用者名稱」!
則說明新增成功了!!!若不成功請移步下一條
1.6.ssh-keygen -t rsa -c "***x@***.com"
ssh -t [email protected] //報錯
提示warning:warning:permanently added 『git@』 to the list of known hosts permission denied (publickey)錯誤。
解決方案:
在當前使用者目錄下建立檔案
~/.ssh/config
,並給檔案新增以下內容
userknownhostsfile ~/.ssh/known_hosts
1.7、更改專案clone位址(如果用https關聯過前提下):
vi .git/config
修改url =
改為url = git@***.com/name/project.git
Debian技術筆記 不斷完善中
debian技術筆記 不斷完善中.ssh部分 1.關閉dns掃瞄,加速遠端使用者登入 修改 etc ssh sshd config 在檔案最後新增usedns no然後重啟,etc init.d ssh restart 2.通過ssh傳輸檔案 傳送本地檔案到遠端主機上 scp var temp te...
常用Linux 命令 不斷完善中
1 kill 所以名字匹配 的程序 ps aco pid,cmd awk xargs kill netstat n awk tcp end 使用 uniq,輸出結果同上,在寫法上更簡潔 效能更好 netstat an awk tcp uniq c 3 當使用vi 編輯某個檔案後發現沒有許可權儲存的時...
部落格導讀(整理思路,不斷完善中)
經過一段時間的胡寫亂畫,不知不覺寫了50多篇隨筆 當然都很隨意,很多流水帳,不少都是為了給自己乙個提醒作用的 檢視了一下,發現有需要開始整理自己的思路,學習方向,學習系列。於是有下面的想法 整體隨筆分下面幾大類 前端開發 js框架學習 後台開發 休閒 成長總結 發發牢騷 部落格diy 1.實現隨便的...