以Blog為例闡述Git多人協作開發流程

jopen 10年前發布 | 19K 次閱讀 Git 版本控制系統

項目背景:

張三 / 李四 / 王五 打算共同協作,開發一套博客系統

項目分工:

張三 / 李四 負責文章系統 王五負責評論系統

建立服務端倉庫

git雖然是分布式版本管理工具,但為了方便管理,我們需要建立一個中心倉庫,先在服務端建立兩條分支

master develop

master保存穩定版(production ready),開發人員平時的代碼都提交到develop分支上

開發者的Git分支

張三的Git分支

因為張三和李四同時開發文章系統,所以就有了下面的分支


# 張三的Git分支
article (local)
lisi/article (via git remote add lisi http://lisi-server/lisi.git)
origin/master (via git remote add origin http://remote-server/blog.git)
origin/develop


李四的Git分支

跟張三類似,不過article server變成了張三的


# 李四的Git分支
article (local)
zhangsan/article (via git remote add zhangsan http://zhangsan-server/zhangsan.git)
origin/master (via git remote add origin http://remote-server/blog.git)
origin/develop


王五的Git分支

因為只有王五一個人開發評論系統,所以只要一條遠程分支就行了


# 王五的Git分支
comment (local)
origin/master (via git remote add origin http://remote-server/blog.git)
origin/develop


開發過程

張三和李四

假設張三負責文章的管理,及前端顯示。李四負責文章的分類和標簽系統。

張三開發完一部分后(n次本地commit),提交到本地的git server(也就是李四添加的http://zhangsan-server/zhangsan.git)。

李四開發完一部分后,因為要與張三開發的部分合并,所以需要執行一下rebase或merge


# 當前在article分支中
git rebase zhangsan/article
# 提交到本地的git server (也就是張三添加的http://lisi-server/lisi.git)。
git push local/article master


這時張三又開發完了一部分,他也會走跟李四一樣的流程,rebase & push (如果有沖突,解決之)。

假設由張三統一負責將每日的開發進度提交到remote develop分支上,張三在執行了上面所說的流程后,提交到服務端的develop分支。但這時很可能王五已經把他寫的代碼提交了,所以要先執行一下rebase


git rebase origin/develop git push origin develop


這樣張三和李四的代碼就都提交到了服務端的develop分支上。王五那邊的流程也一樣,只是少了本地同步的過程。

開發完畢,進入測試階段

經過幾天的開發,各個功能都已基本完成,下面就要進入測試階段。具體做法是在服務端新添加一個分支,命名為release,所以這時服務端就有3個分支了


master 
develop 
release


三位同學都在本地新建一個branch,對應服務端的release分支

git checkout -b release origin/release

分別進行測試,如果發現問題,則執行pull & push


# 當前在release分支下
git pull origin release
git push origin develop


經過幾天的測試后,發現沒什么問題了,就可以發布穩定版了,假設為0.1


git checkout master
git rebase origin/release
git tag 0.1
git push origin master --tags


同時別忘了把release分支上的代碼與develop分支合并,保證develop分支上不會有遺留的bug。(沒有找到如何直接merge兩個服務端branch的方法)


git checkout develop
git rebase origin/release
git push origin develop
# 刪除服務端的release分支
git push origin :release


接下來就可以繼續在develop分支上進行開發了。

添加新特性

博客系統需要添加archives功能,這個功能的開發就交給了新來的趙六。此時,在服務端新開一個分支,命名為feature,這時服務端的分支就變成了這樣


master
develop
feature/archive


趙六也在本地建立一個archive分支,每天提交到服務端的feature/archive,趙六的Git分支是這樣的(不相關的服務端Git已省去)


master
archive
origin/feature/archive


等到這個feature開發完了,與服務端的develop分支執行一下rebase,然后再提交到服務端的develop,這樣博客的archive功能就有了


git checkout archive
git rebase origin/feature/archive
git push origin feature/archive
# 如果要刪除服務端的feature/archive分支的話
git push origin :feature/archive


接下來的流程跟上面的一樣:開發完畢后,新建release分支,在那上面進行bug修復,修復完畢后,merge到服務端的master和develop

緊急修復漏洞

博客出現了一個xss漏洞,需要盡快修復,這時新建一個hotfix分支(現在本地建,然后提交到服務端),然后對漏洞進行修復,修復完后,提交到服務端的master和develop


git checkout master
git pull origin master
git checkout -b hotfix
# 漏洞修復...
# 修復完后
git push origin hotfix
git checkout master
git rebase hotfix
git push origin master
git push origin develop

原文地址:http://blog.leezhong.com/tech/2011/02/25/git-workflow-with-blog-demo.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!