当前位置:   article > 正文

【git、gerrit】git amend如何撤销_gerrit 撤销提交

gerrit 撤销提交

本文参考自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"
  • 1
  • 2
  • 3

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

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

现场已经出现, 我们要撤销 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 产生一条记录

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/630974
推荐阅读
相关标签
  

闽ICP备14008679号