假设我正在分支B中的某个功能。我的功能取决于同事在分支A中所使用的另一个功能。
我与同事密切合作,因此在开发过程中,他经常会用B中需要的新内容来更新A。获得他的更改的方法是只与他的分支合并。所以我在B中所做的事情如下:
git checkout master
git checkout -b B
..
git commit Some work
..
git commit More work
..
git fetch origin
git merge origin/A
..
git commit Event more work
..
git fetch origin
git merge origin/A
..
git commit And even more work
..
git fetch origin
git merge origin/A
...
这很好。问题是我们希望掌握这一点并拥有良好的历史记录。特别是我们要:
我想出的唯一方法是:
一个问题是,我必须手动选择非合并提交。
有更好的方法吗?
答案 0 :(得分:1)
好吧,您可以自动选择樱桃,而不是手动挑选樱桃,即重新设置基数:
git rebase A B
git将自动:
A
中,不需要再次应用。但是,在此过程中,您可能会遇到很多冲突。
我建议,如果将合并时的干净历史记录导入到您中,则可以将工作流调整为git rebase origin/A
而不是git merge origin/A
,这意味着您的历史记录将保持干净。您可能还想稍微了解一下git rebase工作流程。
答案 1 :(得分:0)
在numpy开发中使用的一种常见技术是将功能分支压缩为单个提交。对于一个较小的项目,这可能不如@Cimbali's answer那样有效,但是对于numpy大小的项目而言,它确实非常有效,其中单个PR的粒度相对于整个项目而言非常小。使用rebase进行清理的一个优点是,您可以在进行任何合并之前将所有内容都很好地移动到有保证的快速转发状态。
标准命令类似于
git rebase -i master
然后为所有提交(除了第一次提交)选择fixup
,然后滚动。