典型使用方案:提交Git中多個分支的更改
我有master,branch_foo和branch_bar。所有都是最新的。現在,我做了一個「git checkout master」並開始修復錯誤。
可以說修復是在所有分支上處於相同狀態的跟蹤文件上 - 即。在修復之前,來自每個分支的文件的差異不會導致差異。
有沒有辦法將此修復提交給所有分支?
典型使用方案:提交Git中多個分支的更改
我有master,branch_foo和branch_bar。所有都是最新的。現在,我做了一個「git checkout master」並開始修復錯誤。
可以說修復是在所有分支上處於相同狀態的跟蹤文件上 - 即。在修復之前,來自每個分支的文件的差異不會導致差異。
有沒有辦法將此修復提交給所有分支?
我希望git cherry-pick
是你想要的。
將修復提交到第一個分支後,可以使用git cherry-pick
將其合併到其他每個分支中。
上SO此相關的問題可能會感興趣的: Git & Working on multiple branches
這種常見的方法是「合併向上」。從man gitworkflows
:
始終將您的修復提交到最早支持的需要它們的分支。然後(定期)將集成分支向上併入彼此。
這給出了一個非常可控的修復流程。如果您發現您已經對例如master也是必需的,你需要向下挑選它(使用git-cherry-pick(1))。這會發生幾次,沒有什麼可擔心的,除非你經常這樣做。
第一種方法當然是首選 - 在您的repo中只提交一次是很好的,並且能夠查看它進入每個分支的歷史記錄。然而,生活並不完美,你有時會發現自己處於第二類。如果情況變得很常見,你也許可以寫一個腳本像
multi-cherry-pick <commit> <branch> [<branch>...]
,檢查出每個分支輪流和櫻桃挑選指定的提交。
是的,有。在單獨主題(功能)分支(分支出最早分支/最早狀態)上進行此提交,然後將此主題分支合併到所需的任何分支中。
該工作流程例如在Junio C Hamano(Git的維護者)的Never merging back博客文章中進行了描述。
這大致就是Jefromi wrote寫道
謝謝。是的,我最終使用了主題分支。 Tim對我提出的問題的接受答案也是由你寫的,正是我需要的:) – Carl 2009-10-07 02:28:12
是的,我想過混帳摘櫻桃。只是想知道是否有更快的方法。 – Carl 2009-10-06 19:37:13
謝謝:)相關的問題正是我所需要的。 – Carl 2009-10-06 19:46:01