github 多人協作

github 多人協作

最近需要團隊合作寫一個程序,終於要見識到git厲害的多人協作了,記錄下過程,方便回顧。
首先在分支策略上有一個很好的文檔可以看,由Vincent Driessen提出,非常簡潔明瞭,各個分支的功能明確。
git主分支的名字默認叫master,它是自動創建的,並且默認將本地與遠程的master分支統一。主分支主要用來發布重要版本,日常開發應該在另一條分支上進行,我們把開發用的分支叫做Devlop分支,在dev分支上開發好後再合併到master分支上進行發佈。
這裏寫圖片描述
將develop分支發佈到master分支的命令:

git checkout master    #切換到master分支
git merge --no-ff dev  #--no-f是快進式合併的意思

對於多人合作而言這兩個分支都需要推送到遠程庫。

git checkout -b dev
git push origin dev

而每個人用於開發的分支,如個人分支,功能分支等可以按需求選擇是否推送。
這裏寫圖片描述
功能分支以及用於修復bug的臨時分支在完成後類似上面dev與master的合併操作一樣,我們將feature分支與dev分支合併,合併後都可以刪除掉:

git checkout -d feature2

以上是總體的一個分支框架,即小組成員在各自負責的分支上工作,完成後向開發分支dev進行合併,合併後可以刪除這些工作分支。遇到bug時可以新建一個臨時的bug分支進行修改。下面說一下具體的操作問題。
首先我將另一個小夥伴添加爲我的協作者:
我的倉庫——>settings——>Collaborators然後輸入小夥伴的用戶名add進來就可以了。然後小夥伴就可以在他的電腦上clone我的倉庫裏的代碼並有寫入權限。

git clone [email protected]:yourname/rep_name.git

使用git branch命令查看分支

git branch
* master

只有master分支,因爲當他從遠程庫clone時默認只能看到本地的master分支,上文已經說過我們儘量在開發分支dev上進行日常,所以必須創建遠程origin的dev分支到本地,於是他用這個命令創建本地分支:

git checkout -b origin/dev

現在他就可以在本地創建一個自己的分支,這個分支如果不用與他人合作就可以不用推送,也就只有他自己知道~,然後將寫好的和dev分支進行合併,確認好後再將dev分支push到遠程:

git checkout -b feature_by_him  #新建分支並編碼提交
git add somefeature.py
git commit -m "some feature complete by him"
git checkout dev    #切換到dev
git merge --no-ff feature_by_him   #合併修改
git push origin dev   #推送到遠程dev

這樣就保證了多人合作,並且在dev分支上進行合併。但是,如果這時候我也在完成了一部分代碼並且合併到dev上了,修改的部分與小夥伴的有衝突就會推送失敗。
這裏寫圖片描述
按照提示

git pull

這裏寫圖片描述

git pull也失敗了,原因是沒指定本地dev分支與遠程origin/dev分支的鏈接,根據提示設置:

這裏寫圖片描述

然後再嘗試pull:
這裏寫圖片描述

pull成功後提示你需要手動解決衝突然後提交,提示顯示衝突文件是README.md,或者你可以用git status 查看衝突文件:
這裏寫圖片描述

直接查看README文件可以看到不同分支的修改內容,用<<<<, ====, >>>>分開:
這裏寫圖片描述

我們手動修改後保持並提交:

git add README.md
git commit -m "conflict test finish"
git push origin dev

衝突解決,現在可以在遠程庫看到你解決衝突後的版本了
用參數的 git log我們可以看到分支的合併情況:
這裏寫圖片描述

最後直接截下了了廖雪峯老師這部分的總結,這篇文章基本是按照他的流程來的,受益匪淺!
這裏寫圖片描述

參考:廖雪峯老師的git教程
Vincent Driessen

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