2013-02-26 73 views
1

我在許多開發人員的幾個項目上使用git。我通常的工作流程是針對特定功能/請求在本地進行分支,將我的更改合併到上游追蹤的本地分支作爲快進合併,並推送更改。我總是支持甚至一次提交。我從未在與其他人共享的分支上本地提交,因此我可以自由地對本地進行重新佈局,直到我向上游推送我的更改。作爲一個優先事項,我希望我的合併儘可能快速提交。彷彿所有的項目的第1版是所有開發商推在origin/v1分支我最好的例子:使用快進提交合並的git工作流程

git checkout v1 
git checkout -b feature-A 
#Do work on feature-A branch. Test, rebase --interactive to clean up 

最後我在哪裏我想我的變化合並v1本地和推點到origin/v1。我會做一個git fetch originfeature-A簽出。如果有改變,我會結帳v1和合並

git fetch origin 
#If New changes are present checkout v1 and merge 
git checkout v1 
git merge origin/v1 #I could pull but I prefer to fetch, log origin/v1, and then merge 

我們實現快進合併爲feature-A我籤feature-A,變基到v1,結賬v1,合併feature-A,推動v1origin

git checkout feature-A 
git rebase v1 
git checkout v1 
git merge --ff-only feature-A 
git push origin v1 

非快速轉發提交沒有問題,合併提交也沒有錯。再次,這只是一個偏好問題。我想知道是否有更好的工作流程來完成同樣的事情,而無需通過所有的分支結賬。在我更新v1分支的基礎上重新綁定feature-A之後,可能會有一個我不知道的git命令。

https://stackoverflow.com/a/4157106/620304看起來可能有所幫助。一個可能的工作流程將更新v1從起源的最新變化和後局部底墊我更新v1feature-A的HEAD:

#Starting from feature-A currently checked out 
git fetch origin 
#New changes are present 
git checkout v1 
git merge origin/v1 
git checkout feature-A 
#In I didn't fetch anything from origin's v1 branch I can skip the commands between the comments 
git rebase v1 
git branch -f v1 feature-A 
git push origin v1 

我敢肯定,有可能是一個更好的方法。任何幫助/輸入非常感謝。

+0

對於每次提交,您都不需要分支,您可以擁有壽命更長的分支(例如,也可以將一系列提交開發新功能)。只要將它們重新組合(或合併)到準備發佈的分支中即可。 – vonbrand 2013-02-27 19:41:38

+0

@vonbrand - 我同意。我不會爲每一次提交而分支。我更喜歡總是爲一個特性分支,無論它是否爲1次提交或更多。我發現分支比從上游回購中追蹤分支更容易。 – Joel 2013-02-27 20:10:29

回答

2

只使用快進合併的工作流本質上是一個工作流工作流。除了git rebase origin/v1而不是合併之外,一般的rebase工作流程與您給出的示例非常相似。

我見過的最引用的文章是Randy Fay的博文:A Rebase Workflow for Git

請務必閱讀本文開頭部分鏈接的後續文章,瞭解一些快捷方式以便於使用。

+0

只要注意「rebase」是一個歷史重寫操作,你正在創建前所未有的提交(更不用說被測試了)。 – vonbrand 2013-02-27 19:40:04