git merge 问题求教

同事不小心把 dev 分支 merge 到自己的开发分支了,这样就导致自己的开发分支上出现了 dev 分支上所有的提交记录。
现在开发分支上的提交记录中,糅合了 dev 分支上所有的 commit,而且不是连续的,这样感觉就不能使用 reset 之类的操作回退到某个版本。
现在想要撤销这次 merge,把自己分支上的代码和提交历史恢复到 merge 之前的样子,大哥们,请问这种情况该怎么解决呀?:joy:
目前想到的最直接的操作就是把开发分支给删了,重新来一遍

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案
  1. 如果没有推送到远程,直接删除本地分支,重新拉取远程分支
  2. 如果已经推送,找到自己最后一次提交,git reset <HASH> --hard

补充:

想要深入了解可以看下官方的两篇文章(中文呦~):
2.4 Git 基础 - 撤消操作
7.7 Git 工具 - 重置揭密

2年前 评论
qingshui (楼主) 2年前
Su 2年前
qingshui (楼主) 2年前
讨论数量: 12
  1. 如果没有推送到远程,直接删除本地分支,重新拉取远程分支
  2. 如果已经推送,找到自己最后一次提交,git reset <HASH> --hard

补充:

想要深入了解可以看下官方的两篇文章(中文呦~):
2.4 Git 基础 - 撤消操作
7.7 Git 工具 - 重置揭密

2年前 评论
qingshui (楼主) 2年前
Su 2年前
qingshui (楼主) 2年前

首先你需要找到那次 merge 操作对应的提交记录,你可以使用 git log 命令查看提交历史,假设你的这次 merge 操作对应的提交记录是 b98b8f3,可以执行下面这条命令:

git revert ^b98b8f3
2年前 评论
qingshui (楼主) 2年前
Lion- (作者) 2年前
qingshui (楼主) 2年前

要分情况,如果你是使用的 rebase 模式,那就可以直接 reset 到你自己的提交位置,就可以。

如果使用的 merge 模式,那执行 revert merging 的那个 commit 加上 -m 1,回退掉这次 merge 就可以。

可以参考这个:git - How do I revert a merge commit that has already been pushed to remote? - Stack Overflow

2年前 评论
qingshui (楼主) 2年前

git reset --hard commitid

直接覆盖到指定的提交id

2年前 评论
qingshui (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!