1. 程式人生 > >Git-Flow 的個人理解以及專案中的實際應用

Git-Flow 的個人理解以及專案中的實際應用

Tip:不需要了解git-flow思想和概念的同學可以直接忽略文字部分直接進入程式碼講解流程

  1. 首先git-flow是對git程式碼管理的一種特殊應用,主要是應用於多人協作開發的專案流程中.和git的使用沒有本質區別,git-flow可以理解為是使用指令碼對git的封裝 學習和使用git-flow 需要有git基礎,所以建議想學習git-glow的同學先學習git基礎知識內容.
  2. git-flow 的核心思想即使開發流程像流水一樣有序的進行,針對開發協同中的有序和相互隔離的思想.提出了長期分支和臨時分支的概念
    1. master分支(長期分支) : 分支用於儲存產品程式碼,每一個提交到master分支的程式碼都應該已經經過嚴格的驗證測試.所有開發中的程式碼都不允許直接提交到master分支上
    2. develop分支(長期分支) : 分支是開發的基礎分支,所有開發完成的程式碼都彙集到該分支並等待測試完成後被整合到master分支上. develop 分支一定是比master分支節點相同或延後的,原因就是develop可能包含新的功能程式碼或修復bug程式碼,導致分支節點比master分支節點延後
    3. feature分支(臨時分支) : 用與新功能的開發,為完成的功能開發程式碼不應該提交到develop分支,需要完成時再合併到develop分支.合併完成後可以將該臨時分支刪除,
    4. hotfix 分支 (臨時分支) : 用於修復bug的分支,和feature分支一樣,區別只是名字不同用於區分不同的分支功能而已

針對在實際專案中的使用,由於作者本人開始學習使用時就是直接使用的git進行操作,所以此處只講解一下使用git如何實現git-flow的功能,其他使用方式還有直接安裝git-flow擴充套件命令(此擴充套件命令即對git命令的封裝),可以參考Git Tower中對git-flow的方法,好了話不多少,上乾貨

  1. 開發新功能或是修改bug都需要先將develop分支拷貝到本地.因為develop分支是開發的基礎分支.
git clone developURL(開發分支的地址)
  1. 根據需求新建臨時分支並跳轉至臨時分支,增加功能可以用feature,修復可以使用hotfix或bug
git checkout -b feature/hotfix/bug

此時可以使用命令列檢視當前分支節點是否是develop分支的最新節點

git log
  1. 確認最新節點一致後可以進行新增功能程式碼或者是修改bug的程式碼
git add file(修改的檔案) 儲存修改到暫存區
檔案較多時可以使用git add .新增全部檔案修改
git commit -m "節點說明" 儲存修改到分支
  1. 當功能完成後並確認是否所有的修改都已經儲存並提交到當前臨時分支.
使用 git status 檢視是否還有未儲存的檔案
  1. 當所有修改都儲存後,下一步進行分支的合併
git checkout dev : 首先跳轉至dev分支
git pull : 拉取dev分支上最新的程式碼節點,因為在你開發時可能其他同事已經有了更新的程式碼提交,所以需要先將最新的程式碼拉取下來
git checkout feature : 跳轉回臨時分支feature,
git rebase -i dev : 將dev分支上的最新節點程式碼整合到臨時分支,這一步是非常有必要的,因為可能你和其他協作者同時修改了相同的程式碼導致衝突
操作到此時有兩種可能,
	1. 如果沒有衝突的話會提示rebase success.
	2. 如果有衝突則會如果有衝突則會提示can't rebae xxx,
如果有衝突就需要先解決衝突程式碼然後再繼續合併
解決衝突的方式有多種方式,此處不再解釋,可以放在下一篇blog中將一個非常好用的工具
假設解決衝突成功或者沒有程式碼衝突,git rebase -i dev之後使用git log 會發現,本地的臨時feature分支已經包含了dev 分支上的最新節點,同時,本地分支上的開發程式碼節點位於dev分支節點的後面
此時臨時分支已經相當於最新的程式碼分支了,下一步驟只需要將feature臨時分支的程式碼合併到dev分支即可.

git checkout dev 跳轉回dev分支
git merge feature 將feature分支上的程式碼合併到dev分支上
git log 檢視發現dev分支已經包含feature分支的程式碼了.
git push origin dev 提交dev分支程式碼到遠端倉庫即可
  1. 到此為止所有的流程已經完成,你會發現你的git鏈上所有人的提交是類似於svn管理的節點鏈一樣是一條直線,沒有節點叉,沒有拐點,非常美觀.

如果有疑問或者各種意見可以留言,我一般看到都會及時回覆.如果有緊急的問題需要聯絡作者,可以傳送郵件至[email protected] 另外本人非常喜歡圈內人交流溝通(因為我需要一個牛皮的雅痞的師傅帶我啊),歡迎各位大佬指點