当我在Android Studio 3.3.1中的Github中使用Revert时,为什么我不能回滚到某一点?

问题描述 投票:5回答:2

我提交并推送我的代码三次,他们提交1,提交2和提交3。

我希望将我的代码回滚到提交2并将它们推送到远程存储库。

所以我做点恢复操作提交2(参见图像还原),一个文件合并冲突对话框显示(参见图像文件合并)和合并显示的子对话框,就像图像合并子图像。

答:我无法理解为什么在进行还原操作时会显示以下代码?似乎系统准备好所有历史记录提交记录让我合并。

<<<<<<< HEAD
//Submit 3
=======
//Submit 1
>>>>>>> parent of 86821fc... Submit 2

B:而且,我无法得到正确的结果(将我的代码回滚到提交2)无论我选择接受你的,接受他们的或合并......命令,为什么?

C:如果我启动Merge ...操作,系统会怎么做?

提交1 enter image description here

提交2 enter image description here

提交3 enter image description here

恢复enter image description here

文件合并enter image description here

合并的孩子enter image description here

git android-studio github git-reset git-revert
2个回答
6
投票

1)为什么会这样?

你在这里混淆了revertreset

重置将当前分支获取到提交历史记录中的上一个点。

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

这也是你得到一个你没想到的合并的原因。


2)如何解决手头的情况?

现在尝试重置到所有这些混乱之前的点,它应该是好的再次。

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

git merge --abort

然后检查你的log并找出你最初想要“恢复”的提交(我建议你在这里改变你对这个术语的口语使用,就像你看到的那样伤害)并重置它:

git reset --hard <commitHash>

(既然你(我猜?)没有被推到遥控器上,没有任何伤害。如果你实际上在这个过程中推了一些东西,请评论,我会编辑我的答案来解决它。)


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

查看名为“Do revert”的屏幕截图,这是您应该选择“将当前分支重置为此处”而非“恢复”的位置。


2
投票

意识到这似乎是What are different about Revert command among of popup menu, git menu and Show History in Android Studio 3.3?旁边的问题,我不确定我的回答是否有问题。

答:我无法理解为什么在进行还原操作时会显示以下代码?似乎系统准备好所有历史记录提交记录让我合并。

这被称为Merge Conflict。它发生在两个提交要合并但他们发现编辑同一个地方有不同的想法,这使得Git无法决定保留哪一个。然后Git保留这两者,用以下格式显示:

<<<<<<< Branch1
Content A
=======
Content B
>>>>>>> Branch2

并让您手动决定保留哪一个。

B:而且,我无法得到正确的结果(将我的代码回滚到提交2)无论我选择接受你的,接受他们的或合并......命令,为什么?

然后我发现我的答案有错。我稍后会修改它。

如果要将存储库还原到提交2的时间,则应选择提交2的子提交,即在您的情况下提交3,然后使用“他们的”进行合并。

为何提交3?这是因为,Revert“生成一个新的提交,它会恢复原始提交中所做的更改”,然后当您还原提交3时,它将清除您在提交3之后所做的事情(包括),这就是存储库看起来就像你提交2。

为什么“他们的”?在这里,如果你选择提交2,那么提交是在提交2,“我们的更改”是提交3(我们在提交2后做了什么),“他们的更改”是提交1(为什么?我们要还原(取消) )我们在提交2中做了什么,然后在提交2之前,存储库变成了它的样子,即提交1)。

为何冲突?提交3和提交1已经改变了同一行有不同的想法,然后发生冲突。

...等等,在我测试的时候,我想我在IntelliJ IDEA中发现了Local ChangesChangelist的错误...是的,这已被多次报道,使用不同的复制方法,例如IDEA-124412IDEA-67036IDEA-20326 ,在更改列表中显示了使用不同方法修改了两次的文件,认为第二次修改已经恢复了第一次修改。

C:如果我启动Merge ...操作,系统会怎么做?

当您单击Merge...时,您可以看到问题的最后一张图片中显示的窗口。此窗口允许您进行交互式合并。有“X”和“>>”或“<>”或“<

© www.soinside.com 2019 - 2024. All rights reserved.