我用我的回购邮件偶然发现了这个问题:
我的分支树有以下结构:
(branch) a - b - c - d - e - f - g
/ /
(master) 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 ...
在这里,当我创建分支时,我在提交1处从master分支,然后在提交5中将master合并到分支。
问题是:在合并时,我放弃了一些更改,我想将它们还原,以便我可以再次将master合并到我的分支中,就像在commit 5中的合并从未发生过一样。
换句话说,如何在不提交后续提交中的更改的情况下撤消合并对提交5(或提交d)的影响? (即e - f - g)
我的目标是能够将master合并回分支,但现在我会更加小心我的合并。
感谢。
答案 0 :(得分:3)
(branch) a - b - c - d - e - f - g
/ /
(master) 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 ...
git rebase --onto c d g
git checkout -b newbranch
(newbranch) e' - f' - g'
/
(branch) a - b - c - d - e - f - g
/ /
(master) 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 ...
如果您对结果感到满意,请丢弃旧分支并重命名新分支:
git branch -D branch
git branch -m newbranch branch
最后推新分支。
git push -n origin branch # check what you're about to push
git push -f origin branch # -f is required to rewrite history; be careful