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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一、问题说明

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

得到如下的界面出现一个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中总是有后悔药可以吃的。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6