(我是真心害怕你们看不懂,我都这样讲解啦,还舍不得点个赞吗?😭)
接下来就是保存这次修改操作。在 insert 模式下,先按 esc
,退出插入模式,然后按下英文的冒号 :
会发现光标聚焦到了底部。紧接着输入 wq
然后按下回车。这样就执行了保存退出。(w:wirte to disk 写入磁盘,q:quit 退出)
我们执行一下 git log
看一下,commit 信息确实被修改了。但是同时也要注意左下角,提醒你远程仓库的这个 commit
信息不对称,同时本地这个修改 commit 记录还未提交上去,提醒你提交。
但是在此之前,我们要注意一个细节变化。这是本地 commit 修改过后的 commit-hash标识
这是我们之前的 commit-hash标识,你会发现其实这个命令是删除了上一次 commit,然后重新生成了一个新的 commit 记录
最后,我们同样需要用到 git push -f
这个命令,来强制把这次修改记录覆盖掉远程仓库的。
(再次提醒:git push -f 在多人协同开发的时候,一定要慎用)
然后看一下远程仓库。
四. git reflog
这个命令是搭配 git reset
使用的,虽然使用的场景有限,但是还简单讲解一下吧。
git reset --hard
这个命令和 git reset --soft
都是重置代码的意思。但是 git reset --hard
命令不会将你修改的代码返回到你的暂存区,而是真正的删除了你撤销掉的 commit 记录。
这里我们模拟一下场景,现在这个 commit 我希望撤回到暂存区。在上面我们讲解了 reset --soft HEAD~1
这个命令的使用方法。
我们换 reset --hard HEAD~1
试试。
会发现这个修改真的丢了。
这时候使用 git reflog
,可以查看我们执行 git 相关的所有操作,找到上一次 commit-hard标识
的信息,复制。
然后执行 git reset --soft [hash-id]
你会发现现在多了一个 还没提交的 commit ,那么它是什么呢?
让我们执行一下 git log
看一下
回来了回来了,都回来了~
总结
代码可以回来,但是属于你青春的那个TA什么时候才可以回来呢?