我们在开发过程中,难免会进行一些误操作,比如下面我们提交 723cc1e commit 的时候把 2b27deb 和 0ff665e 不小心也提交到这个分支了。
0ff665e 是属于其他还没有合并到 master 分支的 MR,所以我们这里肯定不能把它带上来。我们需要把它删了。值得高兴的是,git 给我们提供了 rebase 相关的命令来实现这个目标。下面我们来一步一步地介绍如何实现。
我们可以先使用 git log
命令查看本地代码的 log 信息,得到的结果如下:
蓝色框里面的代码其实就是我这次需要提交的;而红色框里面的代码其实是属于另外一个 MR,需要我们删除。我们找到红色框提交的上一次提交的六位 hash 值,也就是 029e3f,然后执行下面命令:
git rebase -i 029e3f
这时候会进入到下面页面,可以看到里面有五次 commit,第一条其实是需要我们删除的,第五条其实就是我们本次提交的,需要保存。
我们只需要把第一条记录删除,然后按 :wq
,这时候就会把第一条 commit 删除,我们可以使用 git log
命令查看是不是生效了:
可以看到确实生效了,如果我们需要把这个结果同步到线上,需要执行下面的命令:
⇒ git push origin join_pushdown -f 枚举对象中: 394, 完成. 对象计数中: 100% (394/394), 完成. 使用 8 个线程进行压缩 压缩对象中: 100% (207/207), 完成. 写入对象中: 100% (255/255), 149.26 KiB | 2.76 MiB/s, 完成. 总共 255(差异 139),复用 0(差异 0),包复用 0 remote: Resolving deltas: 100% (139/139), completed with 108 local objects. To https://github.com/iteblog/presto.git + 723cc1e2bb...d3a078cd11 join_pushdown -> join_pushdown (forced update)
好了,到这里我们已经删除了不必要的 commit 了。
本博客文章除特别声明,全部都是原创!原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【Git 删除指定 commit】(https://www.iteblog.com/archives/9940.html)