IDEA 撤销 merge 操作(详解)

作为一个开发者,我们都知道Git是一个非常重要的版本控制工具,尤其是在协作开发的过程中。然而,在使用Git的过程中难免会踩一些坑,今天我来给大家分享一个我曾经遇到的问题:在使用IDEA中进行merge操作后如何撤销错误的合并?

一、前言

现在有两个本地分支dev 和 master, 将 dev 合并到 master 后如何撤销?(注意:以上操作还未 push 到远程分支)

需要分两种情况讨论:

  • 合并过程中未发生冲突
  • 合并过程中发生了冲突

二、解决方案 - 通过 Git Bash 命令行解决

这里通过 git bash 命令行的方式解决我们的问题,如果习惯通过 idea 进行版本控制的可以直接看第三部分的操作,附带详细的操作图片

1、合并过程中未发生冲突

方法一:通过 git reset --mixed [commit id]

// 第一步:查看日志,获取 commit id,即下面的cc65...
// 注意:找准 commit id,我们要找的是还没有合并前的 commit,这样我们就可以直接回退到这个 commit
Git命令:git log
效果如下:
commit cc65773448f8e9d54d40288c3926e8f3d6e88961 (HEAD -> master)
Author: xxxxxxxxxxx
Date:  xxxxxxxxx
// 第二步:回退到指定 commit id,并且将回退的代码全部放入到工作区中,这种方式比较保险
// 注意:此时修改过的代码以及新增的文件还在工作区
Git命令:git reset cc65773448f8e9d54d40288c3926e8f3d6e88961 
    或 git reset --mixed cc65773448f8e9d54d40288c3926e8f3d6e88961
// 第三步:恢复所有修改过的文件
// 注意:如果有新增的文件是不会清除的,需手动删除,红色的文件就是新增的
Git命令:git checkout . 或 git restore .

方法二:通过 git reset --hard [commit id]

// 第一步:查看日志,获取 commit id,即下面的cc65...
Git命令:git log
// 第二步:回退到指定 commit id,并清空工作目录及暂存区所有修改,简单来说就是你在这个 commit id 之后的所有操作都会被清除
// 注意:该操作比较危险,新手使用该命令需谨慎,请确保你已经掌握了该命令再使用
Git命令:git reset --hard cc657...

2、合并过程中发生冲突

方法一:通过 git merge --abort

// 最安全简便的方法,回到未合并前的状态
Git命令:git merge --abort

方法二:通过 git reset --mixed [commit id]

// 第一步:查看日志
Git命令:git log
// 第二步:回退到指定 commit id,并且将回退的代码全部放入到工作区中,这种方式比较保险
// 注意:此时修改过的代码以及新增的文件还在工作区
Git命令:git reset cc65...
    或 git reset --mixed cc65...
// 第三步:恢复所有修改过的文件
// 注意:如果有新增的文件是不会清除的,需手动删除,红色的文件就是新增的
Git命令:git checkout . 或 git restore .

方法三:通过 git reset --hard [commit id]

// 第一步:查看日志,获取 commit id,即下面的cc65...
Git命令:git log
// 第二步:回退到指定 commit id,并清空工作目录及暂存区所有修改,简单来说就是你在这个 commit id 之后的所有操作都会被清除
// 注意:该操作比较危险,新手使用该命令需谨慎,请确保你已经掌握了该命令再使用
Git命令:git reset --hard cc657...

三、解决方案 - 通过 IDEA 解决(附带详细的操作图)

以下是直接通过 IDEA 解决上述问题的操作流程,由于 idea 的版本可能不同,所以你看到的操作界面可能跟我不同,不过解决思路的一样的,你找到跟我对应的操作选项即可

1、合并过程中未发生冲突

方法一:通过 git reset --soft [commit id]

请添加图片描述

请添加图片描述

此时按 Ctrl + k 调出提交窗口,然后 Revert 掉这些文件就可以变回未合并前的状态,具体操作如下:

请添加图片描述

请添加图片描述

请添加图片描述

方法二:通过 git reset --hard [commit id]

注意:此操作比较危险,会清空回退前工作区以及暂存区的所有修改

请添加图片描述

2、合并过程中发生冲突

当合并发生冲突时,此时处于 Merging 的状态,如果想取消合并,可以用 git merge --abort,这是最简单有效的方法,其他方法就不在这里演示了,具体操作如下

请添加图片描述

补充一个知识点:IDEA 不小心关闭了解决冲突窗口,怎么重新打开?

idea 版本不同,看到的界面可能不同,不过都差不多,只要找到这个 Resolve Conflicts 就可以
请添加图片描述

四、最后

以上是我总结的部分方法,但是还有很多其他的方式可以解决,比如 revert 命令,不过它会生成新的提交记录,感兴趣的读者可以去了解下这个命令,希望以上内容能对你有帮助,如有错漏之处,望指正。

  • 8
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Git是一种分布式版本控制系统,用于跟踪和管理代码的变更。下面是关于如何操作Git的详细解释: 1. 初始化仓库:使用git init命令在项目目录中初始化一个空的Git仓库。这将创建一个.git目录,用于保存Git的相关信息。 2. 配置用户信息:使用git config命令设置用户的名字和邮箱,这些信息将用于标识代码的提交者。 3. 添加文件:使用git add命令将文件添加到Git的暂存区中。可以通过git add .命令添加所有文件,或者使用git add <文件名>命令添加指定文件。 4. 提交文件:使用git commit命令提交暂存区的文件到Git仓库中。每次提交都需要添加一个简要的提交信息,以便于查看历史记录。 5. 查看状态:使用git status命令查看文件的状态。该命令会显示哪些文件被修改、被暂存或被忽略。 6. 查看历史记录:使用git log命令查看代码的提交历史。可以使用不同的参数来定制显示的格式和范围。 7. 创建分支:使用git branch命令可以创建新的分支。分支可以用于并行开发,每个分支都有自己独立的代码提交历史。 8. 切换分支:使用git checkout命令可以切换到不同的分支。切换分支后,当前工作目录的文件将自动更新为该分支的最新版本。 9. 合并分支:使用git merge命令可以将一个分支的修改合并到当前分支中。合并时需要解决冲突,以确保代码的一致性。 10. 撤销修改:使用git reset命令可以撤销对文件的修改。可以使用不同的参数来恢复到不同的状态。 11. 远程操作:使用git remote命令可以管理远程仓库。可以添加、删除、重命名远程仓库,并对远程仓库进行同步操作。 12. 推送代码:使用git push命令可以将本地的代码推送到远程仓库中。推送需要指定远程仓库的名称和分支的名称。 13. 拉取代码:使用git pull命令可以从远程仓库中拉取最新的代码到本地。拉取需要指定远程仓库的名称和分支的名称。 Git是一个非常强大和灵活的工具,可以支持团队协作和版本管理。以上是Git的基本操作,希望可以帮助你更好地使用Git

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值