我为当前项目定义了几个分支,除了master分支之外的所有分支都只有相同的一小组文件(少于10个)与master不同。
在master中实现新功能之后,我想以最少的努力将这些更改和添加复制到其他分支。这里推荐的方法是什么?
答案 0 :(得分:2)
您有三种选择:
merge
:如果master的所有更改都需要在一个分支中可见,那就很有趣了,但情况并非总是如此
cherry-pick
:仅将某些提交应用于分支
rebase
:最佳解决方案如果您的分支尚未被推送:您在主服务器上重播分支的提交
但是:在这三种情况下,您需要签出要集成更改的分支,并为每个分支重复该分支。
除非您的分支机构是彼此制造的:
---o branch B1
\
----o branch B2
\
----o branch B3
在这种情况下,您可以:
git checkout B1
,git merge B2
)答案 1 :(得分:0)
通常当我在一个分支上修复一些重要的东西(甚至可能是主分支)时,如果我想将相同的修复复制到另一个分支,我会git checkout my_latest_feature
和git merge --no-commit master
从未尝试cherry-pick,但我认为,这是我猜的最佳方式,因为cherry-pick只会合并特定的更改而git merge --no-commit master
会尝试获取整个树(甚至其他提交除此之外)最新修复)。
我总是讨厌任何篡改提交历史的命令。这就是我从来没有rebase
的原因更新:刚刚发现了类似的问题:How to copy commits from one branch to another?