多人協作:
要檢視遠端庫的資訊,用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