在Android Studio 3.3.1的Github中使用“还原”时,为什么不能回滚到某个点?

Hel*_*oCW 5 git github git-revert git-reset android-studio

我提交并推送我的代码3次,分别是Submit 1,Submit 2和Submit 3。

我希望将我的代码回滚到Submit 2并将其推送到远程存储库。

因此,我对“提交2”点(请参阅图像“ 执行还原”),“文件与冲突合并”对话框显示(请参见图像文件合并)和“合并”的子对话框进行了还原操作,就像图像“合并的孩子”一样

答:我不明白为什么执行还原操作时会显示以下代码?看来系统已准备好所有历史记录提交记录以让我合并。

<<<<<<< HEAD
//Submit 3
=======
//Submit 1
>>>>>>> parent of 86821fc... Submit 2
Run Code Online (Sandbox Code Playgroud)

B:而且,无论我选择接受,接受还是合并...命令,我都无法得到正确的结果(将代码回滚到Submit 2)。为什么?

C:如果启动“合并...”操作,系​​统将如何处理?

提交1 在此处输入图片说明

提交2 在此处输入图片说明

提交3 在此处输入图片说明

还原 在此处输入图片说明

合并文件 在此处输入图片说明

合并之子 在此处输入图片说明

Rom*_*eri 6

1)为什么会这样?

你很困惑revertreset在这里。

重置会使当前分支到达提交历史记录中的上一个点。

还原特定的提交会创建一个新的提交,其中包含与您选择的提交完全相反的提交。这并没有改变老犯,也不让你回到那个过去的点。

这也是为什么您没有想到的合并。


2)如何解决当前的情况?

现在尝试重置为所有混乱之前的状态,它应该又可以了。

首先,如果合并仍在进行,则中止合并

git merge --abort
Run Code Online (Sandbox Code Playgroud)

然后检查您的log位置,并找出您最初想“还原为”的提交(并且我建议您在此处更改通俗的用法,就像您看到的那样),然后重新设置它:

git reset --hard <commitHash>
Run Code Online (Sandbox Code Playgroud)

(既然你(我猜?)尚未推到远程,没有伤害是可以预期的。如果你事实上已经在过程中,评论中推任何东西,我将修改我的回答解决这个问题。)


3)将来如何避免相同的问题?

查看名为“还原”的屏幕截图,是您应该在“将当前分支重置到此处”而不是“还原”上方选择的位置。