git commit --amend 与git commit -m 的区别以及用法

如题,这篇blog主要是想用来记录一下 git commit -m 和 git commit --amend 的用法差异。

我们在使用git上传代码时,正常的流程应该是  git add -u  或者  git add  将文件添加到暂存区,这二者的差异这里不做阐述。然后执行  git commit -m "注释内容"  ,最后push到远程厂库。这时候如果我们push完成后发现代码上传错了!或者需要修改,这时候我们有什么办法可以重新commit呢?这里就涉及到  git commit --amend  的使用了。下面就记录一下我理解的两种commit的使用区别,我也是踩了一些坑做的总结。也欢迎各位指正。

git commit -m

这种commit方式一般适用于某批次文件的第一次提交,一般来说后面是会跟着添加注释,注释这一操作非常关键,能够让管理者和自己区分不同的commit对应的内容。commit后可以通过使用tig查看本次commit的内容以及ID。如下图所示。当然,git log也可以查看本次commit的ID。

tig显示

git commit --amend

amend这种方式一般也称为打补丁,主要是用于本次commit之后,发现文件仍需要补充、添加、修改或者注释需要修改的情况下使用。而且一般来说是需要在push后或者push前,远程厂库管理者尚未进行合并操作的情况下可以使用,如果远程厂库管理者进行了合并操作,那amend之后大概率是会push是会失败的。

使用方式

git commit --amend在使用前,首先是先要把二次修改的文件,或者说上次commit的时候漏的文件,利用git add -u或者git add的方式把文件提交到暂存区,然后再执行git commit --amend,这时候回车后会弹出一个文件(我这里是vim,以vim为例),等待你的编辑,如果你此时只是为了补上漏的文件不需要修改注释内容,那么直接:q退出即可,然后执行push操作推送至远程厂库就好了。如果你需要修改注释内容,那么你就应该在待编辑的文件里修改你的注释,然后:wq保存退出,然后push推送到远程厂库即可。

在使用amend方式的时候需要注意的是,务必确保自己本次执行 git commit --amend时,对应的commit ID是你所希望的,换句话说就是确保是你上一次的commit操作,不然就容易导致一些混乱操作。最简单的确认方式是tig或者git log查看最新一次的commit ID,这时候执行amend所要重复commit的就是最新的commit。那就又有一个问题了,如果我想要执行的amend操作的commit,不是最新的commit,该怎么办呢?这时候就要使用到commit ID。我一般的使用方法是利用git reset --soft commit ID ,这个指令会回退到指定的commit id,在这个ID之后的commit都会被回退,此时再执行amend,就是对应reset commit ID的内容。

总的来说就是,在执行git commit --amend之前一定要先把文件添加到暂存区,这时候使用amend就会把暂存区的文件进行提交。执行amend弹出的文件一般只会修改注释内容,其他内容是不用改的,而且改了也没用。

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值