2009-10-06 95 views
5

典型使用方案:提交Git中多個分支的更改

我有master,branch_foo和branch_bar。所有都是最新的。現在,我做了一個「git checkout master」並開始修復錯誤。

可以說修復是在所有分支上處於相同狀態的跟蹤文件上 - 即。在修復之前,來自每個分支的文件的差異不會導致差異。

有沒有辦法將此修復提交給所有分支?

回答

5

我希望git cherry-pick是你想要的。

將修復提交到第一個分支後,可以使用git cherry-pick將其合併到其他每個分支中。

上SO此相關的問題可能會感興趣的: Git & Working on multiple branches

+0

是的,我想過混帳摘櫻桃。只是想知道是否有更快的方法。 – Carl 2009-10-06 19:37:13

+0

謝謝:)相關的問題正是我所需要的。 – Carl 2009-10-06 19:46:01

9

這種常見的方法是「合併向上」。從man gitworkflows

始終將您的修復提交到最早支持的需要它們的分支。然後(定期)將集成分支向上併入彼此。

這給出了一個非常可控的修復流程。如果您發現您已經對例如master也是必需的,你需要向下挑選它(使用git-cherry-pick(1))。這會發生幾次,沒有什麼可擔心的,除非你經常這樣做。

第一種方法當然是首選 - 在您的repo中只提交一次是很好的,並且能夠查看它進入每個分支的歷史記錄。然而,生活並不完美,你有時會發現自己處於第二類。如果情況變得很常見,你也許可以寫一個腳本像

multi-cherry-pick <commit> <branch> [<branch>...] 

,檢查出每個分支輪流和櫻桃挑選指定的提交。

5

是的,有。在單獨主題(功能)分支(分支出最早分支/最早狀態)上進行此提交,然後將此主題分支合併到所需的任何分支中。

該工作流程例如在Junio C Hamano(Git的維護者)的Never merging back博客文章中進行了描述。

這大致就是Jefromi wrote寫道

+0

謝謝。是的,我最終使用了主題分支。 Tim對我提出的問題的接受答案也是由你寫的,正是我需要的:) – Carl 2009-10-07 02:28:12