git 關於多人協作

曾紀文發表於2017-08-07

基本操作

個人對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的安裝

相關文章