Git使用積累

因新工作需要使用GIT,之前主要在SVN上操作,GIT只是臨時性,很多問題只是當時解決了,並沒有記錄。因此本博客正是出於此目的而寫。

0 基本克隆一個倉庫的步驟

首先,基於ssh-key本地生成公鑰,如ssh-keygen -t rsa -C "[email protected]";

然後,在託管代碼網站上添加個人公鑰;

最後,git clone your_code_ssh_link 即可;

1 clone 時 Host key verification failed

如下圖所示


此時,是因爲在之前詢問(yes/no)時可能直接回車,應該手動輸入yes

2 git倉庫遷移

之前一直在維護一個repo,目前需要將之前的工作轉移至新的repo上,還需要保留LOG。參考http://www.07net01.com/2015/09/933800.html

1). 從原地址克隆一份裸版本庫,比如原本託管於 GitHub。

git clone --bare git://github.com/username/project.git

--bare 創建的克隆版本庫都不包含工作區,直接就是版本庫的內容,這樣的版本庫稱爲裸版本庫。

2). 然後到新的 Git 服務器上創建一個新項目,比如 GitCafe。

3). 以鏡像推送的方式上傳代碼到 GitCafe 服務器上。

cd project.git
git push --mirror [email protected]/username/newproject.git

-- mirror 克隆出來的裸版本對上游版本庫進行了註冊,這樣可以在裸版本庫中使用git fetch命令和上游版本庫進行持續同步。

4). 刪除本地代碼

cd ..
rm -rf project.git

5). 到新服務器 GitCafe 上找到 Clone 地址,直接 Clone 到本地就可以了。

git clone [email protected]/username/newproject.git

這種方式可以保留原版本庫中的所有內容

3 Git中的AutoCRLF選項

背景:近期由於在windows下clone後的repo在vmware裏的ubuntu下用。但是CMAKE-GUI始終報錯。後來查原因,定位在於ubuntu下的cmake-gui讀properties文件無法正確解析,因爲其中的\r\n的問題。
解決:一開始在安裝時,就需要注意CR-LF的選項。如果已經安裝了,則可以設置AutoCRLF選項。
#提交時轉換爲LF,檢出時轉換爲CRLF
git config --global core.autocrlf true   
#提交時轉換爲LF,檢出時不轉換
git config --global core.autocrlf input   
#提交檢出均不轉換
git config --global core.autocrlf false
建議會用input選項。
詳細可以參考http://www.cnblogs.com/flying_bat/p/3324769.html

4 Git-Stash

背景:本地在master分支更改,並且沒有commit,所以在pull master時出現了conflict。
解決:使用stash;首先,將本地修改存儲 git stash;然後 pull內容 git pull;最後 還原git stash pop;
事實上更合理的做法應該是在本地new branch

5 git reset --hard 補救

背景:由於需要查看之前的提交,所以使用了git reset --hard 但是最後想回來發現git log 已經不能顯示最近的git commit hash。

解決:使用git reflog可以顯示已經被刪除的commit的hash值 ,所以重新 找到需要回到的再使用 git reset --hard即可。如果你因爲reset等操作丟失一個提交的時候,你總是可以把它找回來。除非你的操作已經被git當做垃圾處理掉了,一般是30天以後。

詳細可以參考:http://www.cnblogs.com/mliudong/archive/2013/04/08/3007303.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章