这是我的情景。 我正在对分支A工作。我将一个功能分支从分支B本地合并到分支A.之后我在分支A上做了一些更改并提交了一个提交Y.我注意到合并导致了问题,我需要撤消这个合并只留下Y提交。 我没有从本地推到远程分支。所有更改都在传出提交中。 如何在不丢失提交Y的工作但是只推动那个工作的情况下做到这一点? 感谢
BTW:我正在使用Source Tree(我知道这可能是一个命令行,但是如果有人知道如何使用源代码树那么棒的话)
答案 0 :(得分:2)
只要提交Y中没有任何内容与分支B中的任何合并更改直接冲突,您就应该能够运行交互式rebase并删除合并提交。我不熟悉Source Tree,所以我可以提供终端命令:
(来自分支A):git rebase -i HEAD~3
(任意3,你只需要看几个提交)
找到合并提交,按照交互式rebase说明,您可以将单词pick
更改为drop
。保存并退出,git将重放提交,但跳过您指定要删除的提交。
注意:如果您对丢失工作感到不安,我建议您转到远程仓库,然后尝试交互式rebase。如果它可以按你的需要工作,那么强制更新你的仓库,如果它没有按预期工作,你就可以从中获取备份。
希望这有帮助!