一次救命操作--git reset HEAD@{1}

事情是这样的。

因为在porting一个大框架,所以本地积攒了不少修改的代码。终于验证完整了,准备提交code。 悲剧来了,我的code提上去之后显示merge conflict,并且,rebase也没有用!

其实,我们都知道正规的操作是在修改代码之前把本地code和服务器上的先同步。 但是像这样会修改到一些很容易被大家都改动的代码,并且你的验证工作需要好几天的时候,就比较容易遇到这样和别人的提交冲突的情况。

事已至此,我只好把自己的提交做成patch,先把本地的code同步一下服务器再打上去。

吭哧吭哧打了半天,终于一个一个文件修改好了。 

这时很开心,开始摩拳擦掌准备提交了。

git add -A

git commit --amend

啥? 这时什么鬼。完全是误操作呀。 git commit --amend在你已经有提交信息(git commit -s -m "xxxxx")的时候,是用来修改提交信息的内容的呀。 但是!在这里根本就还没有git commit -s -m "xxxxx"。所以,会发生什么呢?

我的提交和这个project的上一个人的提交合并了!

我修改半天的code,居然和别人合并了,这怎么能行。

于是我想把我的误操作git commit --amend撤销掉。

经过求助,小伙伴甩给我一个链接:

https://segmentfault.com/a/1190000014272359 

嗯,实际上撤销分为两步:

1. git reflog --》查看想要回退到哪一步。

2. git reset --soft HEAD@{1} --》回退一步。

如果想撤销到暂存区, 就用 git reset --soft HEAD@{1} 
如果想干掉这个修改, 就用 git reset --hard HEAD@{1}

有了这个操作,再也不用担心自己手残了呢。 因为这个操作,对本地的其他的一些操作也有效。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章