You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何撤销Git中其他分支合并到当前分支的更改?

撤销分支合并的简便方法

别担心,这种场景在日常Git开发里挺常见的,给你两个针对性的解决方案,看你当前的情况来选:

情况1:合并分支yx后,你还没在x上做新的提交

如果合并之后你没再往x上加任何自己的工作,那直接回退到合并前的状态就行:

  • 先确认合并提交的位置:用git log --oneline找到那条写着「Merge branch 'y' into x」的提交
  • 执行回退命令:git reset --hard HEAD~1

注意:这个操作会彻底丢弃合并后的所有改动,仅适合合并后没新增提交的场景;而且如果已经把x推送到远程仓库了,千万别用这个,会改写公共历史,给团队带来麻烦。

情况2:合并y之后,你已经在x上完成了自己的工作(更常见的场景)

这种时候用git revert是最安全的选择,它不会改写历史,而是生成一个新的提交来撤销合并的改动:

  1. 先找到合并提交的哈希值:运行git log --oneline,找到那条合并提交的哈希(比如开头的7位字符)
  2. 执行撤销命令:git revert -m 1 <合并提交的哈希>
    • 这里的-m 1是指保留当前分支(也就是x)的基线,把来自y分支的改动全部撤销掉
  3. 执行完后Git会自动打开编辑器让你写撤销提交的说明,保存退出就行

这么操作之后,你的x分支里就不会包含y的任何改动了,直接提交到远程并创建Merge Request就可以。而且之后如果y分支准备好上线了,还能正常合并到主分支,不会有冲突或历史混乱的问题。

小提示:如果看log分不清合并提交,用git log --graph --oneline能看到分支合并的图形化节点,更容易找到目标提交。

内容的提问来源于stack exchange,提问作者lukaszkups

火山引擎 最新活动