我们可以看到:
- 第三次提交的massage改变了 。
- 看到第三次提交的commit-id由bd4fd48变成了69a9841
- 我们可以看到使用git commit --amend命令,表面上没有生成新的提交 , 只是进行了内容的追加 。但实际上通过git reflog命令查看历史提交记录 , 我们还是看到了,其实是新生成了一个commit 。
说明:(2)场景二场景描述:
- 关于git commit --amend命令原理,往下看 。
- 关于如何修改更早提价的message,看后面的git rebase文章 。
假设新接到需求,需要基于master分支拉取一个feature分支,且这个feature分支只有你自己使用(这一点极其重要),由于开发周期较长,你不想每一次提交都产生一个新的commit,而是想每一次commit都修改前一次提交(一直追加提交) 。
这样做的好处是,等到你的feature分支提测时,就只有一个干净的commit,没有乱七八糟的提交历史,你只要把这一个commit合并到master里就好了。
操作步骤:
在feature分支上:
- 第1次提交代码时,使用命令git commit -a -m "第1次提交的注释"进行提交 。
- 第2次以及只后的提交,使用命令git commit --amend -m "这里填写提交的注释"进行提交 。这样整个分支可以只有一个commit 。
不推荐这样操作 , 多次提交可以使你选择撤销的余地比较多,简化提交次数是比较好的想法 , 但更推荐使用git rebase命令进行操作 。
这里就不演示了 。
3、git commit --amend 命令原理git commit --amend这个命令给人的感觉 , 是用新提交的数据,追加到了前一个commit上 。
其实git commit --amend命令底层原理如下:
前提:你把遗漏提交的文件,或者修改的文件先提交到暂存区 。
- git reset --soft HEAD^:回退一个版本,且工作区和暂存区中的内容不会退 。
- git commit -c ORIG_HEAD:提交操作 。在根据此时的暂存区生成一个新的提交对象,代替原来提交的位置 。说明:-C <commit>,全称--reuse-message=<commit>:获取现有的提交对象 , 并在创建提交时重用现有提交对象的日志消息和作者信息(包括时间戳) 。-c <commit>,全称--reedit-message=<commit>:与-C类似 , 但是-c会调用编辑器,以便用户可以进一步编辑提交消息 。
假设master分支上的提交历史如下图:

文章插图
运行git commit --amend命令 , 过程如下:

文章插图
参考:【『现学现忘』Git后悔药 — 34、git commit --amend 命令】
- https://blog.csdn.net/zxr97570912/article/details/108085873
- https://www.cnblogs.com/chaoguo1234/p/5331586.html
推荐阅读
- 二 『现学现忘』Git后悔药 — 33、revert撤销
- 一 『现学现忘』Git后悔药 — 32、revert撤销
- 男女互相暗恋的表现学生党 男女互相暗恋的表现
- 立夏的经典语录
- 男生在等你主动的表现学生 男生在等你主动的表现
- 『重大发现』京东白条套取方法
- 关于立夏的短句子
- 至上励合张远资料
- 双子座『谈恋爱』必须注意的事情不与前任作比较?
- 87年属兔的适合做什么职业?