修改 commit 记录的常用方法

本贴最后更新于 1616 天前,其中的信息可能已经时移世改

概述

在我们日常使用 git 的过程中难免会出现 commit 提交有问题的情况,因此我将自己在日常开发过程中常用的修改 commit 的方法总结如下。

修改 commit 历史

我们假设这样一个场景,程序员小吴创建了一个文本如下所示:
test

在没有仔细检查的情况下进行了一次提交:
第一次提交

然后此时小吴看到自己原来犯了一个低级错误写成了“1+1=1”,这太尴尬了,马上着手开始修改。

天若 OCR_202005240972907SS

修改完成之后,此时他就犯迷糊了:“如果直接提交是可以直接修改这个错误,但同时会有 commit 记录,万一被人发现这个小错误多尴尬。我吴某人一世英名可不能毁于一次 commit 呀”。此时小吴开始网上搜集资料去解决这个问题,他很容易找到了第一种解决方法。

在 commit 时通过添加--amend 参数进行修改

小吴思考之后执行了如下命令:

git add test.txt
git commmit --amend -m "第二次正常提交"

amend 修改

此时他通过 git log --graph 命令查看提交历史,果然第一次提交历史没有了。小吴很开心,继续很 happy 的写代码,但是写了一段时间之后,发现其实 添加空格 那次 commit 操作记录是没必要存在的。如果还是刚才的方法显然没法改此次 commit 记录。

因此小吴又走上了艰苦卓越的查找资料之路,功夫不负有心人,小吴终于找到了他想要的解决方法。

通过 git rebase -i 命令将多次提交合并成一次提交

因此,小吴执行了如下命令

# HEAD~2表示HEAD前两次的提交,该例子指的是从coomit id为ba9bb257
# 因为该命令在更改是必须给出想要修改的最近一次提交的父提交作为参数
# 命令等价于
# git reabse -i ba9bb257
git rebase -i HEAD~2

执行结果如下:

下边注释部分给出的是修改的命令格式写法。

由于我们是不想要添加一个空格这种 commit 记录的因此我们需要通过 drop 策略来删除此次 commit 历史。

修改后的内容如下:

保存后弹出新的界面如下:

删除“添加空格这一行”,然后保留“增加 1+2”这一行。

保存退出。查看提交记录:

总结

本文主要总结了常用的修改 commit 记录的两种方法,当然可能不太全面。欢迎各位小伙伴补充,谢谢!!

  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    209 引用 • 358 回帖
  • 工具

    子曰:“工欲善其事,必先利其器。”

    285 引用 • 728 回帖
  • 教程
    143 引用 • 597 回帖 • 8 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...