git reset 应用场景示例

今天使用eclipse的git插件进行代码合并时,又出现了匪夷所思的事:

我本地commit后,pull远程仓库,merge过程中不知道出现什么错误,导致我当时的本地仓库处于merging状态,代码一部分更新了,一部分没更新。由于更新的代码量比较大,一点一点区分过于困难,一度不知所措。

后来经git大神一句指点,直接把我local还原到HEAD,尝试重新pull就可以了,也就是使用 git reset --hard HEAD,把 本地仓库回滚到最后一个commit状态

同时这件事也再次说明,在合作开发过程中,随时commit是一个好习惯,最好是每开发完一个小功能点就commit一次。

最后,再总结一下git reset的其他常用应用场景:

回滚add操作:

RT。

回滚最近几次commit:

git reset --hard HEAD~2:回滚最近两次
git reset --hard HEAD~n:回滚最近n次

回滚pull:

如果你从远程仓库pull下来的代码跟本地产生很多冲突,而你又暂时不想解决这些冲突,可以使用 git reset --hard ORIG_HEAD 回滚这次操作,前提是你pull之前已经commit过,不然这次回滚会把你最后一次commit后又更改的代码丢弃,原因上面说过,该命令是回到上一次commit状态,如果pull之前没有commit,请看下一个场景。

在没有commit的情况下回滚pull:

如果你本地更改了代码,但是知道这次pull不会跟自己的更改有冲突,于是你先pull了,然后又TM后悔了,想回滚,此时请使用git reset --merge ORIG_HEAD,把–hard换成–merge就可以保留你之前的那些更改。

你可能感兴趣的:(Git)