我不小心犯了一个错误的分支。图表看起来像这样
a
我想将C和D移动到主人而没有A和B的变化。我希望图表看起来像这样
----o--o-----o (master)
\
\
A--B--C--D (feature)
这可能吗?以及如何在遥控器上做到这一点?
A和B的变化不会合并,所以我不在乎提交是否会丢失
答案 0 :(得分:8)
警告:以下git命令将重写feature
分支的历史记录。 git rebase
和git reset
是危险的,因为它可能对使用feature
分支的其他任何人造成严重破坏。
首先在与other_feature
相同的提交中创建分支feature
。
git checkout -b other_feature feature
将前两次提交重新定位到master
。
git rebase --onto master HEAD~2
结帐feature
。
git checkout feature
将feature
重置为您想要的提交。
git reset --hard HEAD~2
答案 1 :(得分:2)
以下答案假定您的feature
分支已发布到遥控器。我只想从C
分支中选择提交D
和feature
到master
分支,然后在feature
上恢复这两个提交:
git checkout master
git checkout -b other_feature
git cherry-pick <SHA-1 for C>
git cherry-pick <SHA-1 for D>
git checkout feature
git revert <SHA-1 for C>
git revert <SHA-1 for D>