在一个分支中,如何删除某一个commit(里面的内容也删除掉了)呢?

请问,在git一个分支中,如何删除某一个commit(里面的内容也删除掉了)呢?

image.png

我这里是sourcetree工具展示。

阅读 2.7k
4 个回答

搜索一下git rebase命令。

  • git rebase -i xxx 进入交互模式,xxx 指的是你要 rebase 到的根 commit,这里就是 【chore: Base 布局...】 那个
  • 然后进入交互模式会出现一个 terminal 编辑器画面(一般是 vim),然后把要删掉的 commit 前面标记成 drop(就是缩写 d),保留不变的就不用管,是 pick 就行

大概就这样,图是我从别的地方复制过来的,差不多这个意思,修改的地方就是上方红色矩形标注的地方:
image.png

  • 保存(由于删除了历史,可能要先解决冲突,因为后续的 commit 的 base 不一样了)

使用git rebase指令操作解决
具体步骤:
1、git log 查看commit记录,找到要删除的记录的commit编号。
2、git rebase -i commit
3、在弹出的内容中按下 i 键进入编辑模式,将要删除的commit记录编号前面的“pick”修改为“drop”,然后按下Esc键,退出编辑模式,按下 “:wq” 即可保存,删除成功。
4、git log 再次查看commit记录是否删除。

使用git revert指令解决
使用 git revert 命令可以撤销指定提交的更改,并创建一个新的提交来保留已撤销的更改的历史记录
git revert commit

推到远程库后, 无法被删除.

如果只是本地的话, 使用 git rebase 就行.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏