![](/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.