Pull request 團隊合作開發使用詳解

轉載自 https://www.jianshu.com/p/ad80ce032335

今天和大家介紹一種團隊開發中代碼提交中使用的方法,主要是使用git命令和hg命令進行代碼提交的方法,我們使用比較多的是github.comgitee.combitbucket.com這幾種代碼管理系統。我介紹的方法在這幾個系統中都可以使用,只是有個別細節需要注意,我會在介紹的過程中提出來的。首先來看一張我畫的示意圖。

Pull request示意圖


應用場景

 

我們有一個項目叫project,存在公司的主倉庫中,現在我們有多個人對這個項目做協作開發,project項目中有兩個分支online(線上分支)和test(測試分支),online分支是需要部署到生產環境的,test分支是用於測試環境的,我們的上線流程是,代碼一定要經過測試通過後才能上線。對於一個新的需求做開發,我們可能對這個項目做一個或多個功能的開發,每個人分到一個或多個功能做開發,這個過程中需要注意,如何做到多人開發,代碼同步,如何進行測試,如何解決代碼衝突,還有就是如何做code review等等,針對以上的問題,我們做以下的操作步驟。

操作步驟

1、在公司的主倉庫中存在project項目,項目中含有online分支和test分支
2、首先Fork主倉庫中的project項目到自己的倉庫中。如何Fork請自行查找。
3、從自己的倉庫中clone項目到本地倉庫,查看本地倉庫是否含有online分支和test分支
4、修改git命令或是hg命令的配置文件,建立與本地倉庫與主倉庫的聯繫

git命令:修改git的cong文件(.git/config)增加如下內容

 [remote "main"]                # main 爲主倉庫的名字,這個隨便起,看自己的習慣
    url = "替換爲主倉庫的clone地址"
    fetch = +refs/heads/*:refs/remotes/origin/*

hg命令:修改hg的cong文件(.hg/hgrc)增加如下內容

[paths]
    default = "默認的"         # 這個不需要修改,也不要刪除,一定要保留
    main = "主倉庫的clone地址"

5、以上就建立完了本地倉庫與主倉庫和自己的倉庫的聯繫,接下來我詳解一下一個新功能(如用戶列表)的開發流程
6、首先進入項目目錄,切換到online分支,並拉取主倉庫online分支的最新代碼到本地倉庫,與本地倉庫的online分支合併。操作如下
git命令

$ git checkout online
$ git pull main online

hg命令

$ hg up online
$ hg pull main
$ hg up

7、基於當前的online分支創建一個功能分支,分支的名字最好和功能有關係,最好加上一個前綴,表明身份,如我的花名叫白起,我創建一個用戶列表的功能分支爲:bai_user_list.

關於創建分支,這裏就要多說一點了,爲什麼要這樣創建分支
(1)、因爲我們所有開發的功能最終都要上線的,所以一定要基於online建分支,建分支前先把最新的online分支代碼拉取下來併合並
(2)、建立分支一定要與功能有關係,儘量以功能爲名稱,因爲有時開發的功能多了,就忘了哪個分支對應哪個功能了
(3)、爲什麼要加前綴,這個是因爲多人開發的過程中可能有很多相同的功能開發,這樣就能區分相同功能都有誰來開發了,還有在切換分支的時候只要輸入前綴,然後使用雙tab鍵就能列出所有以這個前綴開頭的分支,也就知道自己開發了哪些分支了
(4)、因爲以hg(mercurial)管理的代碼系統,裏面只有一個主分支,其他的分支都是在主分支上建立的節點,pull永遠都是對所有分支做拉取、push永遠是對本地的所有分子做提交。這樣在主倉庫那裏查看分支的話就會有好多分支,查找和管理起來比較混亂。而git管理的代碼系統的每個分支都是相對獨立的,pull可以拉取指定的分支,push也是提交指定的分支,這樣主倉庫永遠只有online和test分支。其實我們開發的功能分支只要合併到online上就沒有保留的必要了。所以也需要刪除,git能做到刪除分支,但是hg卻做不到刪除分支,只能關閉分支

git命令

$ git checkout online
$ git checkout -b bai_user_list

hg命令

$ hg up online
$ hg branch bai_user_list
$ hg ci -m "創建用戶列表功能分支"    # 這裏一定要做一次提交,如果不做提交,修改完切換分支,會把內容丟失,切記!!

8、我們到bai_user_list分支上就可以開始我們的開發工作了,在這個分支上我們可以做多次提交,這裏的提交不會影響到其他分支,等我們開發完了進入下一步提交測試
9、開發完成提交測試,需要把bai_user_list合併到test分支,首先切換到test分支,並拉取最新的代碼,然後再merge分支

git命令

$ git checkout test
$ git pull main test                  # 這個拉取主倉庫test分支的代碼到本地,並與本地代碼合併
$ git merge bai_user_list --squash    # 這個--squash參數很重要,它把bai_user_list分支中的多次提交合併成一次提交,合併到test分支上
$ git status                          # 這個地方也許有衝突,那麼就解決衝突
$ git commit -am "測試"               # 一定要做commit提交
$ git push                            # 這個就提交到了自己倉庫中的test分支上了

hg命令

$ hg update test
$ hg pull main               # 這個拉取主倉庫的代碼到本地
$ hg up                      # 合併遠程倉庫的代碼
$ hg merge bai_user_list     # 合併分支
$ hg st                      # 查看是否有衝突,並解決衝突
$ hg ci -m "測試"            # 一定要做commit提交
$ hg push                    # 這個就提交到了自己倉庫中的test分支上了

10、提交到自己的倉庫之後就需要創建pull request,一定是自己倉庫中test分支到主倉庫test分支的pull requestpull request的操作就不詳細說了自行查找一下就行了,很簡單的操作。
11、提交完pull request之後,需要有一個有管理權限的人把此次pull request合併到主倉庫上,這個地方可以進行code review,如果發現代碼有問題,可以不做合併,通知開發人員修改,之後再提交。審覈通過後就可以合併代碼了,合併之後就可以就行代碼測試了。
12、測試的過程中可能有很多bug,需要反覆修改這樣只需要重複8、9步驟,直到通過測試。
13、測試通過之後需要上線,我們只需要依據第9步,把分支換成online就行了,操作不知如下:

git命令

$ git checkout online
$ git pull main online                # 這個拉取主倉庫online分支的代碼到本地,並與本地代碼合併
$ git merge bai_user_list --squash    # 這個--squash參數很重要,它把bai_user_list分支中的多次提交合併成一次提交,合併到online分支上
$ git status                          # 這個地方也許有衝突,那麼就解決衝突
$ git commit -am "上線"               # 一定要做commit提交
$ git push                            # 這個就提交到了自己倉庫中的online分支上了

hg命令

$ hg update online
$ hg pull main               # 這個拉取主倉庫的代碼到本地
$ hg up                      # 合併遠程倉庫的代碼
$ hg merge bai_user_list     # 合併分支
$ hg st                      # 查看是否有衝突,並解決衝突
$ hg ci -m "上線"            # 一定要做commit提交
$ hg push                    # 這個就提交到了自己倉庫中的online分支上了

14、提交到online分支之後就可以發送pull request操作了,創建自己倉庫中的online分支到主倉庫的online的pull request,然後通知管理員合併分支並上線
15、上線完成之後我們本地創建的功能分支bai_user_list分支需要刪除。一定要刪除,表明這個功能已經開發完成。
git命令

$ git checkout online
$ git branch -d bai_user_list      # 刪除本地分支

hg命令

$ hg update bai_user_list
$ hg ci -m "上線" --close           # hg不能刪除分支,只能關閉分支

以上就是團隊開發的詳細流程,整個過程都能用上面的圖來說明,綠色的箭頭我們只進行一次操作,紅色的箭頭是我們經常進行的操作,希望大家熟練掌握,減少在開發中因爲提交代碼帶來的麻煩。



作者:戰神_白起
鏈接:https://www.jianshu.com/p/ad80ce032335
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯繫作者獲得授權並註明出處。

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