问题:
在使用git进行代码提交的过程中,难免可能出现提交错误,面对这种情况我们首先想到的是撤销本次提交,具体操作及流程如下:
假设分支目前的状态如下:

1.当前分支指针指向最新的提交D,假设要回退到提交C,则选中提交C,右击“复位当前分支到这里”;复位时会让选择soft,medium,hard模式,soft和medium都会保留提交D的改动,hard不保留,这意味着选择hard就无法再回到提交D。复位后版本库状态如下:

2.此时如果将原来的提交D再次放入暂存区,再次提交,我们将这次提交称为D’,然后push到远程,会出现报错:
当前分支落后于远程分支
解决方案
这是因为本地分支目前是基于提交C进行提交代码的,而远程分支的还指向着提交D,因此上本地分支落后了。解决方案也很简单,选择:
合并冲突
由于D’与D的提交内容上相同,因此不需要手动解决冲突,合并后会产生一个新的提交E。最终分支关系如下:

反思
在进行提交D’的时候,如果先拉取远程代码到本地,同样会提示合并冲突,其实这种方式更好,因为它将冲突的解决放在了push之前,而不是在push过程中。
本文讲述了在Git中遇到代码提交错误时如何撤销并解决复位模式下的问题,特别关注了软、中、硬复位的区别以及合并冲突的处理。作者推荐在提交新版本前先拉取远程代码以避免推送冲突。
624

被折叠的 条评论
为什么被折叠?



