2014-04-08 73 views
56

我一直在使用git flow一段時間了。我很想了解一個特定的用例。Git流 - 創建功能分支關閉另一個功能分支

對於我的一個項目,我有一張新網站功能的門票。這張票取決於許多子任務。我想爲主票單創建一個功能分支,然後爲每個子任務創建一個從父功能分支關閉的功能分支。

假設我有一票PROJ-500和我創建一個特性分支它

git flow feature start PROJ-500 

然後我想通過PROJ-515整合門票PROJ-501PROJ-500整件事融入develop之前。有沒有辦法對我來說,做這樣的事情

git flow feature start PROJ-511 -b PROJ-500 

然後加班這些子任務得到完成,當他們的功能完成後,該分支合併到PROJ-500

git flow feature finish PROJ-511 

上面的命令將合併到PROJ-511PROJ-500

而一旦所有的子任務完成,然後PROJ-500將完成,併合併爲develop

這種方式將新網站功能集成到開發中作爲一個單元而不是零碎。

+0

難道這不行嗎? 'git流量功能啓動PROJ-511 PROJ-500'?您在評論中發佈的關於DerekS'答案的鏈接表明它應該。 –

回答

68

您可以創建通過

git flow feature start PROJ-511 feature/PROJ-500 

子特性分支但是你不能使用GitFlow工具合併分支回主要特徵的分支,因爲如果你這樣做

git flow feature finish PROJ-511 

該功能將合併到develop。 Ergo 子功能不支持,您需要手動完成。

替代品:雖然這個要求並不新鮮。有一個open issue以及一個fork project聲稱支持完成功能分支以外的其他分支develop。我還發現一個pull request與該功能的實施。你可能想嘗試一下修改,看看你是否滿意。

+1

@pymarco:感謝您接受答案。但我很好奇:你有沒有嘗試過其他的選擇?如果是這樣,哪一個和結果是什麼?它是否按預期工作?也許其他讀者可以從你的經驗中學到些什麼。 :-) – kriegaex

+0

對不起,但我沒有時間回到這個。我會在某個時候嘗試。 – pymarco

+3

爲什麼downvote? Downvotes旨在用於寫得不好,草率的答案,顯示沒有研究努力或知識的跡象。不管怎樣,謝謝。 – kriegaex

7

我不認爲這有一個方法在git流中,但它只是簡單的git。

git checkout PROJ-500 
git checkout -b PROJ-511 
...do your PROJ-511 work... 
git checkout PROJ-500 
git merge PROJ-511 
git branch -d PROJ-511 
+0

謝謝德里克迴應。是的,我可以遵循該工作流程。但git流封裝了一些我更喜歡用於子功能開發的命令和完整性檢查。例如,這裏是git-flow-feature的鏈接 - https://github.com/nvie/gitflow/blob/develop/git-flow-feature – pymarco

3

前面已經提到的,我們可以使用任何基地分支開始一個新的功能,以

git flow feature start PROJ-511 feature/PROJ-500 

並完成子功能,我們可以即暫時改變git的流程配置,使用我們的特性分支,而不是develop

git flow config set develop feature/PROJ-500 && git flow feature finish PROJ-511 

這樣,git流將運行所有命令和完整性檢查。最後,要恢復配置,我們可以運行

git flow config set develop develop