【问题标题】:Understanding Git for Visual Studio 2015: Revert了解适用于 Visual Studio 2015 的 Git:还原
【发布时间】:2015-10-19 19:48:14
【问题描述】:

对于测试,我有一个简单的控制台应用程序并提交它(初始)。然后我添加评论并提交 (00)。然后我更改评论并提交它(01)

现在我想简单地恢复到 00。

Changes | Actions | View History
right-click 00 | Revert
Are you sure you want to revert .... | Yes

此时我遇到了一个冲突:Program.cs [都已修改]。但为什么会发生冲突——我只想恢复到以前的版本?我点击它,然后我可以选择:

Merge (button)
Edited on Source | Diff | Take Source (links)
Edited on Target | Diff | Take Source (links)

如果我单击合并,我会看到三个不同的窗格,它们都有不同的版本(源、目标和合并)。

源看起来像我的第一个版本(初始),目标看起来像我当前的版本 (01),合并看起来像我选择恢复到 (00) 的版本。

如果我关闭该窗口,我会看到一个对话框,询问我是否要接受合并结果——从那里我可以对合并的文档进行还原。

你能解释一下源面板和目标面板是什么意思吗(看起来目标是我当前的版本,但源看起来就像我想要的这个版本之前的版本(它看起来像初始!)。

最终我可以保留源面板、目标面板或合并的结果,基本上可以恢复到这三个选项中的任何一个。这是 VS 2015 工具的工作方式吗?关键问题:如果我只想完全恢复到以前版本的文件而不进行任何合并怎么办?

另外...当我在这个工具上观看 Microsoft Build Demo 时,我注意到他们做了一个还原并且没有我上面讨论的问题。 https://channel9.msdn.com/Events/Build/2015/3-746(见 7:30 分)。

谢谢!

附言我没有在 Internet 上找到有关此工具如何恢复工作的文档,因此如果有请指出该链接,我会在那里查找 :)

【问题讨论】:

  • 我不完全确定你在做什么,但如果你在历史记录中有两次提交,并且你右键单击第一个提交并为它选择恢复,那么你不是 reverting返回 到那个版本,但你实际上想撤消那个版本。因此,您希望保留提交 01 中的更改,但撤消 00 中的更改。假设 00 添加了 Program.cs 并且 01 修改了它,撤消 00 当然会导致问题,因为您要求再次删除它,尽管您已经更改了它从 01 年开始。
  • 我有 3 次提交:初始(添加 Program.cs),然后是 00(添加评论),然后是 01(更改评论)。现在我只想从我现在的位置恢复到 00。
  • 那你要revert更改01.
  • 啊,现在我看到了我的错误...我认为在历史记录中你选择了你想要恢复到的那个,但我从你的评论中看到你选择了你想要的那个要还原
  • git revert for VS 2015 与 git revert 在其他任何地方相同。

标签: git visual-studio-2015


【解决方案1】:

如果您选择要还原的提交,Visual Studio 不会“还原到”该时间点 - 它会合理地删除提交引入的更改。它尝试仅删除该提交中引入的更改。

考虑单个文件的一些系列提交:

提交 1

Line one
Line two
Line three
Line four
Line five

提交 2

Line one
Line 2
Line three
Line 4
Line five

提交 3

Line ONE
Line 2
Line three
Line 4
Line FIVE

如果您想恢复提交 2 - 您正在尝试撤消它引入的更改,同时保留提交 3 中引入的更改。结果将是:

还原的提交 2

Line ONE
Line two
Line three
Line four
Line FIVE

但是,可能存在冲突。如果提交 2 更改了提交 3 更改的同一行,则还原将因冲突而失败,您必须解决它才能继续。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 2015-03-23
    • 2016-10-07
    • 2015-10-30
    相关资源
    最近更新 更多