一次救命操作--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}

有了這個操作,再也不用擔心自己手殘了呢。 因爲這個操作,對本地的其他的一些操作也有效。

 

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