基本操作
個人對git的瞭解:資料不真實,但命令是沒錯的。
場景(該場景是最頻繁的):現在你的遠端倉庫(我的倉庫地址是solink@so-link.org:/git/solink/solink_android.git,大家可以使用github上的開源專案的地址)有個dev分支,專門用於日常開發,現在需要將該分支clone到本地、編輯、提交。
1) 從git上clone下dev分支
命令:
//-b指定clone遠端的哪個分支
git clone -b dev solink@so-link.org:/git/solink/solink_android.git
如果發生你沒有許可權clone的情況,可能需要你輸入賬號密碼或將你的公鑰新增到該倉庫(前提是別人願意將你的公鑰新增到他的倉庫)
2) 執行完步驟1,現在本地已經有了該dev分支,切換到本地dev分支,在該dev分支下新建自己的分支,命令:
//checkout表示檢出分支:如果本地有該分支,則直接切換到該分支;如果遠端有該分支,則檢出到本地並切換到該分支;如果沒有,則失敗。
//checkout -b:表示檢出;當該分支不存在的時候就在本地新建一個分支
git checkout -b Given
3) 執行完步驟2,此時已切換到了自己的工作分支,即2中所建的分支Given,這樣就可以進行自己的工作了(在eclipse中更改程式碼)
4) 完成自己的工作後,就可以提交到自己的工作分支Given
命令
git add the_file_or_dir_that_you_change
git commit -m "對你自己的工作的描述,比如修復了某個bug或者新增了xx功能"
5) 切換到本地dev分支,命令:
git checkout dev
6) 將dev分支與自己的工作分支合併 命令:
git merge Given
後面的工作就是將自己做的東西提交到遠端倉庫dev。注意不能直接就將本地dev push上去,因為如果你直接這樣會將他人提交過的成果直接覆蓋(因為在你clone分支dev之後,別人也有可能對dev進行修改並提交到遠端,這時你的dev就跟遠端的不一樣了;如果你直接推送,就會將將別人的程式碼覆蓋,會被打死的)
7) 從遠端分支fetch或者pull,建議用fetch
命令 :
git fetch origin dev:temp //將遠端的dev拉下來作為temp分支(因為別人如果push過,遠端的dev就和你本地的dev不一樣了)
git merge temp //如果有衝突的話會有提示,然後解決衝突
解決完衝突後,再add,commit,然後git merge temp, 最後git push origin dev
git add the_conflict_file
git commit -m "fix the conflict between Given and Tom"//你和Tom的程式碼發生的衝突,當然實際中最好還是寫上發生了什麼衝突
git push origin dev
8)push完了之後,你們可以將那些temp分支刪掉,隨意
git branch -d temp //-d 代表刪除
修改倉庫地址
當git伺服器變更時,如果要將程式碼推到遠端,會發現:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:cnucP/uvrPLl/7jFPOqDgU5yk/SADsJjHSy7XQfK/3k.
Please contact your system administrator.
Add correct host key in /home/zjw/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/zjw/.ssh/known_hosts:5
remove with:
ssh-keygen -f "/home/zjw/.ssh/known_hosts" -R git.so-link.org
ECDSA host key for git.so-link.org has changed and you have requested strict checking.
Host key verification failed.
fatal: 無法讀取遠端倉庫。
此時就需要更改遠端倉庫地址:
方法一,先刪除後新增:
git remote rm origin
git remote add origin [url]
方法二,修改:
git remote origin set-url [url]
windows上的git使用
- 在windows上開發有時是極其蛋疼,不像linux一兩條命令就行了。
- windows git的安裝