我在許多開發人員的幾個項目上使用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 origin
與feature-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
,推動v1
回origin
。
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
從起源的最新變化和後局部底墊我更新v1
到feature-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
我敢肯定,有可能是一個更好的方法。任何幫助/輸入非常感謝。
對於每次提交,您都不需要分支,您可以擁有壽命更長的分支(例如,也可以將一系列提交開發新功能)。只要將它們重新組合(或合併)到準備發佈的分支中即可。 – vonbrand 2013-02-27 19:41:38
@vonbrand - 我同意。我不會爲每一次提交而分支。我更喜歡總是爲一個特性分支,無論它是否爲1次提交或更多。我發現分支比從上游回購中追蹤分支更容易。 – Joel 2013-02-27 20:10:29