天天看點

Git學習筆記(5)

多人協作:

要檢視遠端庫的資訊,用git remote或git remote -v

推送分支,就是把該分支上的所有本地送出推送到遠端庫。推送時,要指定本地分支,這樣,Git就會把該分支推送到遠端庫對應的遠端分支上:

$ git push origin master

如果要推送其他分支,比如dev,就改成:

$ git push origin dev

多人協作時,大家都會往master和dev分支上推送各自的修改。

現在,模拟一個你的小夥伴,可以在另一台電腦(注意要把SSH Key添加到GitHub)或者同一台電腦的另一個目錄下克隆:

$ git clone [email protected]:michaelliao/learngit.git

Cloning into 'learngit'...

remote: Counting objects: 46, done.

remote: Compressing objects: 100% (26/26), done.

remote: Total 46 (delta 16), reused 45 (delta 15)

Receiving objects: 100% (46/46), 15.69 KiB | 6 KiB/s, done.

Resolving deltas: 100% (16/16), done.

當你的小夥伴從遠端庫clone時,預設情況下,你的小夥伴隻能看到本地的master分支。不信可以用git branch指令看看:

$ git branch

* master

現在,你的小夥伴要在dev分支上開發,就必須建立遠端origin的dev分支到本地,于是他用這個指令建立本地dev分支:

$ git checkout -b dev origin/dev

現在,他就可以在dev上繼續修改,然後,時不時地把dev分支push到遠端:

$ git commit -m "add /usr/bin/env"

[dev 291bea8] add /usr/bin/env

 1 file changed, 1 insertion(+)

$ git push origin dev

Counting objects: 5, done.

Delta compression using up to 4 threads.

Compressing objects: 100% (2/2), done.

Writing objects: 100% (3/3), 349 bytes, done.

Total 3 (delta 0), reused 0 (delta 0)

To [email protected]:michaelliao/learngit.git

   fc38031..291bea8  dev -> dev

你的小夥伴已經向origin/dev分支推送了他的送出,而碰巧你也對同樣的檔案作了修改,并試圖推送:$ git branch --set-upstream dev origin/dev

Branch dev set up to track remote branch dev from origin.

再pull:

$ git pull

Auto-merging hello.py

CONFLICT (content): Merge conflict in hello.py

Automatic merge failed; fix conflicts and then commit the result.

這回git pull成功,但是合并有沖突,需要手動解決,解決的方法和分支管理中的解決沖突完全一樣。解決後,送出,再push:

$ git commit -m "merge & fix hello.py"

[dev adca45d] merge & fix hello.py

$ git push origin dev

Counting objects: 10, done.

Delta compression using up to 4 threads.

Compressing objects: 100% (5/5), done.

Writing objects: 100% (6/6), 747 bytes, done.

Total 6 (delta 0), reused 0 (delta 0)

To [email protected]:michaelliao/learngit.git

   291bea8..adca45d  dev -> dev