![](/img/trans.png)
[英]How to merge to another branch with only two commits and with one commit squashed?
[英]How to merge only one commit to master and not all commits of a branch?
我有两个名为dev
和master
的分支。 目前,提交如下所示:
dev master
--- ------
A A
B B
C
D
E
现在我只想合并提交E
到分支master
。 所以这将是预期的结果:
dev master
--- ------
A A
B B
C E
D
E
知道我该怎么做吗?
另外,我应该如何设法将提交C
, D
稍后合并到分支master
以实现完全同步。
首先, E
不应该依赖于C
或D
。 否则,您可能必须解决一些冲突,否则您将处于不完整的 state 中。
问题通常有另一种解决方案。 我会尝试提供一些。
A--B(master)--C--D--E(dev)
在master
分支指向的地方创建一个分支: git checkout -b topic master
A--B(master, topic)--C--D--E(dev)
樱桃采摘提交E
: git cherry-pick E
A--B(master)--C--D--E(dev)
\
E'(topic)
将topic
分支合并到master
分支: git checkout master
git merge topic
A--B--C--D--E(dev)
\
E'(master, topic)
此时,如果你将dev
分支变基到master
分支, E
提交将消失,因为它们(应该)相同: git checkout dev
git rebase master
A--B--E'(master)--C--D(dev)
A--B(master)--C--D--E(dev)
交互式 rebase dev
分支到master
分支并在C
提交之前移动E
提交: git checkout dev
git rebase -i master
A--B(master)--E--C--D(dev)
在E
提交点处创建一个分支: git checkout -b topic E
A--B(master)--E(topic)--C--D(dev)
合并topic
分支到master
分支: git checkout master
git merge topic
A--B--E(master)--C--D(dev)
A--B(master)--C--D--E(dev)
在dev
指向的地方创建一个分支: git checkout -b topic dev
A--B(master)--C--D--E(dev, topic)
运行git rebase --onto BD topic
A--B(master)--C--D--E(dev)
\
E'(topic)
此时,如果你将dev
分支变基到master
分支, E
提交将消失,因为它们(应该)相同: git checkout dev
git rebase master
A--B--E'(master)--C--D(dev)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.