当前位置:   article > 正文

Git进阶:修改上次提交 git commit --amend_git amend修改再次提交

git amend修改再次提交

一、问题说明

git commit 后,发现刚才的备注写错了,或者代码漏掉了,想取消刚才的提交。此刻有两种方法
(1)使用git reset命令将刚才的提交会退掉(需要注意的是git reset --soft 和git reset --hard的区别)。
(2)修改刚才的提交:git commit --amend。这个命令的实质是使用一次新提交覆盖上一个提交

相比git reset,git commit --amend有很多优点,比如如果工作区已经改的面目全非,这时如果执行 git reset, 就很难分的清哪些内容属于被撤销的提交了,而且回退已经push的提交,那么reset后有可能会因为本地版本比远程版本低而造成push被拒绝。

这里说第二种方法,git commit --amend

二、问题重现

1、 代码修改后,进行了第一次提交。请注意这里的版本号

在这里插入图片描述

2.现在我现在发现刚才的提交错了,下面开始amend的操作,修改刚才的提交

$ git commit --amend
  • 1

得到如下的界面,出现一个vim编辑器,修改相关内容后,保存。如图所示我修改了提交的备注

在这里插入图片描述

保存后再看一下log日志,很明显,我成功的修改了提交的备注。但是需要注意的是,提交的版本号也变了,因此说git commit --amend命令的实质是使用一次新提交覆盖上一个提交。

在这里插入图片描述

至此,git commit --amend的使用已经介绍完毕了,有兴趣可以继续往下阅读。

问题扩展

有可能出现一个问题。我使用amend修改提交之后发现,原来我第一次的提交才是对的,amend的修改是错误的。那我想回到第一次提交的那个版本,怎么办?

这时候就可以使用git reset来进行恢复了。

首先使用 git reflog 命令查看操作记录,git reflog可以查看到你的所有操作历史,就像回退commit一样,你可以回退你的操作,当然不限于这里的amend,其他操作也可以使用这种方法撤回。

在这里插入图片描述

很明显,我们只需要回退’d5edfc3‘那个操作就行了。
我这里使用了git reset --hard (–hard参数会将回退的内容丢弃掉,请根据自己的需求谨慎使用)。

在这里插入图片描述

再次查看log后,很明显可以看到提交的备注、尤其是版本号,已经回到最开始的那一个版本了。

在Git中,总是有后悔药可以吃的。

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

闽ICP备14008679号