利用`git commit —amend —no-edit`命令修改上一次变更内容

场景描述

假设你创建了一个文件,并写入了一些内容,然后通过git addgit commit将此变更提交。提交之后才发现这个文件中少了一些内容,此时有两个选择摆在你面前:

  • 将文件内容补全,然后和之前一样git addgit commit。显然,你可以通过git log看到这两条commit记录。

  • 回到过去,修改上一次提交的那个文件。如此一来,你的commit记录只会有一条。对于一些有代码洁癖并且看中git commit记录的程序员,这点很重要,特别是在开源项目中。

场景再现

  • 初始化git仓库
$ mkdir test && cd test && git init
  • 第一次commit内容
$ echo 'Hello world' > README.md
$ git add .
$ git commit -m "Add README.md"
$ git log --oneline
c56f680 Add README.md
  • 修改文件内容并合并到上一次的commit变更当中
$ echo 'Hello voidint' >> README.md
$ git add .
$ git commit --amend --no-edit
$ git log --oneline
eb6c8cb Add README.md // hash值发生了变化

可以看到,在执行git commit --amend --no-edit之后,hash值由c56f680变成了eb6c8cb,但是message内容并没有发生变化,并且最重要的是只有一条commit记录。

如果要修改上一条的message,那么去掉--no-edit选项即可,git commit --amend -m "xxxx"。同理,commit记录同样只会有一条。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Git是目前最流行的版本管理系统,也是最先进的分布式版本控制系统(distributed version cont...
    pro648阅读 5,825评论 1 17
  • 1、签名代码 2、验签代码
    请叫我姐阅读 3,372评论 0 2
  • 在 Swift 中能够表示 “任意” 这个概念的除了Any 、AnyObject以外,还有一个AnyClass。 ...
    Wang99阅读 206评论 0 0
  • 我是一只小小鸡 来到这个世界上才七天的小小鸡 今天 我第一次在玩耍的路上遇到雨 开始的时候还挺好玩 我还追逐着...
    云淡风轻之蓝阅读 675评论 40 37