回滚merge和pull操作
(1) 从origin拉下来一些更新,但是产生了很多冲突,你暂时没有这么多时间去解决这些冲突,因此你决定稍候有空的时候再重新pull。
(2) 由于pull操作产生了冲突,因此所有pull下来的改变尚未提交,仍然再stage area中, 这种情况下 git reset --hard 与
git reset --hard HEAD
意思相同,即都是清除index和working tree中被搞乱的东西。
(3) 将topic/branch合并到当前的br anch,这次没有产生冲突,并且合并后的更改自动提交。
引用
$ git pull
(1)
Auto-merging nitfol
CONFLICT (content): Merge conflict in nitfol
Automatic merge failed; fix conflicts and then commit the result.
$
git reset --hard
(2)
$ git pull . topic/branch
(3)
Updating from 41223... to 13134...
Fast-forward
$ git reset --hard ORIG_HEAD
(4)
Auto-merging nitfol
CONFLICT (content): Merge conflict in nitfol
Automatic merge failed; fix conflicts and then commit the result.
$
$ git pull . topic/branch
Updating from 41223... to 13134...
Fast-forward
$ git reset --hard ORIG_HEAD
(1) 从origin拉下来一些更新,但是产生了很多冲突,你暂时没有这么多时间去解决这些冲突,因此你决定稍候有空的时候再重新pull。
(2) 由于pull操作产生了冲突,因此所有pull下来的改变尚未提交,仍然再stage area中, 这种情况下 git reset --hard 与
(3) 将topic/branch合并到当前的br anch,这次没有产生冲突,并且合并后的更改自动提交。
(4) 但是此时你又发现将topic/branch合并过来为时尚早,因此决定退滚merge,执行git reset --hard ORIG_HEAD回滚刚才的pull/merge操作。说明:前面讲过,执行git reset时,git会把reset之前的HEAD放入.git/ORIG_HEAD文件中,命令行中使用ORIG_HEAD引用这个commit。同样的,执行pull和merge操作时,git都会把执行操作前的HEAD放入ORIG_HEAD中,以防回滚操作。