【git、gerrit】git amend如何撤销

本文参考自https://blog.csdn.net/woai8339/article/details/90447901

git amend 作用

我们知道git amend作用是合并当前的改动至上一次提交,起到修复的作用
比如:
我们假设一个场景,比如说,
小明第一次
git add .
git commit -m "first push"
git push
然后,在merge之前小明突然发现,我需要更新某一个文件,再次提交会生成新的commit-id。小明想在原有的提交之上再重新提交一次,这次就用到git commit --amend,会将此次提交作为最后一次提交更新。

注意:前提是当前最后一次提交没有merge,如果你在执行类似pull操作后,你本地的上一次提交就不一定是自己的提交了,可能是别人的某次commit。

git amend如何撤销

当我们git amend之后我们想撤销又该如何操作呢?
首先制造事故现场. 追加空行到项目中的 index.html 文件下:

$ echo "" >> index.html 
$ git add .
$ git commit -m "add blank line to index.html"

然后再加一行到 index.html, 并 amend 一下:

$ echo "this line would break the code" >> index.html 
$ git add .
$ git commit --amend

现场已经出现, 我们要撤销 amend 的那个提交.

三行命令解决的事情~
git reflog查看操作记录,找到amend下一个head节点。这里用Ref[2]来看一下:
在这里插入图片描述
git reflog后我们看到commit (amend)所在的head为红色对应的HEAD@{0},我们可以看到下一个headHEAD@{1}。那么接下来,用 git reset 将当前分支的 HEAD 指向 HEAD@{1}, 即可达到撤销 amend 的目的:
在这里插入图片描述
现在就把更新弄到工作区了,此时可以重新对index.html做处理,比如想把改动作为新的提交,而不是合并至上一次提交,
重新执行
git add index.html
git commit -m ‘new message’
git push

其实很简单,本来是知道git reflog 和 git reset 用法的,只是一时没有想起来用在这个地方,主要是没想起来git amend也会在git reflog 产生一条记录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值