如上圖的一個成功分支模型。
我的疑問就是,在其他一些輔助性分支merge到develop分支之前,develop分支有改變,那麼輔助性分支應該merge develop分支,與develop分支保持同步,但是從圖上並看不出這個動作。
如果其他輔助性分支需要即時同步develop分支,那麼用merge --no-ff,還是直接merge或rebase呢?
那麼這樣一來圖形是不是會變亂?
這是我本地測試的情況,都用的merge --no-ff模式合併
目前又遇到一個問題是,同一個分支不同人clone到本地,做開發,然後在push的時候,偶爾會發生一個merge動作,大概是這樣的,在本地git push 的時候,提示需要先pull ,此時git pull會自動執行一個merge動作,不知道大家曾經遇到這個問題沒?
還有多人開發的時候,大家是不是都自己創建一個branch分支開發,而不是直接在遠端的分支上做開發,例如develop是個遠端分支,那麼多人開發的時候clone到本地,直接在develop上開發,還是git checkout -b local branch開發?
ps:不知道描述清楚沒.
如果讓我做的話, 我會這麼做.
從develop分出去的多個分支, 都只透過develop來交換代碼, 互相之間不會合併.
各分支同步develop分支的時候, 都使用--rebase選項, 將develop的最新提交同步到開發分支, 然後再將此開發分支使用--no-ff選項合併回develop, 這樣保持單一分支的commit的連續性.
這是我本地測試的情況,都用的merge --no-ff模式合併
建議參考我校稿的這篇文章
http://fanyi.jobbole.com/2214/
例如hotfix分支,最後要checkout到develop分支進行merge就可以了
Hotfix分支從master分支建立,必須合併回develop分支和master分支,為Hotfix分支可以這樣取名:hotfix-*
Hotfix分支在某種程度上非常像release分支,他們都意味著為某個新版本發布做準備,並且都是預先不可知的。 Hotfix分支是基於當前生產環境的產品的一個bug急需解決而必須創建的。當某個版本的產品有一個嚴重bug需要立即解決,Hotfix分支需要從master分支上該版本對應的tag上進行建立,因為這個tag標記了產品版本
建立hotfix分支
Hotfix分支從master分支進行建立。例如目前線上1.2版本產品因為server端的一個Bug導致系統有問題。但是在develop分支進行更改是不可靠的,所以我們需要建立hotfix分支,然後開始解決問題:
千萬別忘記在建立分支後修改版本號。
然後解決bug,提交一次或多次。
結束hotfix 分支
完成工作後,解決掉的bug程式碼需要合併回master分支,但同時也需要合併到develop分支,目的是確保在下一版中該bug已經解決。這多麼像release分支啊。
首先,對master分支進行合併更新,然後打tag
備註:你可以使用-s or -u 參數為你的tag設定標籤簽名。
緊接著,在develop分支合併bugfix程式碼
這裡可能會有一些異常情況,當一個release分支存在時,hotfix 分支需要合併到release 分支,而不是develop分支。當release分支的使命完成後,合併回release分支的bugfix程式碼最終也會被合併到develop分支。 (當develop分支急需解決這些bug,而等不到release分支的結束,你可以安全的將這些bugfix程式碼合併到develop分支,這樣做也是可以的)。
最後刪除這些臨時分支