了解Visual Studio 2015的Git:还原

mbi*_*ird 5 git visual-studio-2015

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

现在我想简单地回到00.

Changes | Actions | View History
right-click 00 | Revert
Are you sure you want to revert .... | Yes
Run Code Online (Sandbox Code Playgroud)

此时我遇到了冲突:Program.cs [都修改过].但为什么会出现冲突 - 我只是想恢复到以前的版本?我点击它然后我有选项:

Merge (button)
Edited on Source | Diff | Take Source (links)
Edited on Target | Diff | Take Source (links)
Run Code Online (Sandbox Code Playgroud)

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

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

如果我关闭该窗口,我会得到一个对话框,询问我是否要接受合并结果 - 从那里我可以使用合并文档进行恢复.

你能解释一下源和目标面板的含义吗(看起来目标是我当前的版本,但是在我想要的这个版本之前,源代码看起来像一个版本(看起来像是初始版本!).

最终,我可以保留源面板,目标面板或合并的结果,基本上恢复到这三种选择中的任何一种.这是VS 2015工具的工作方式吗?关键问题:如果我只是想在没有任何合并的情况下完全恢复到以前版本的文件怎么办?

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

谢谢!

ps我没有找到关于revert如何在互联网上使用这个工具的文档,所以如果有一个请指出该链接,我会看那里:)

Edw*_*son 12

如果选择提交以进行还原,则Visual Studio不会"恢复到"该时间点 - 它会对提交的更改进行逻辑删除.它尝试仅删除该提交中引入的更改.

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

承诺1

Line one
Line two
Line three
Line four
Line five
Run Code Online (Sandbox Code Playgroud)

承诺2

Line one
Line 2
Line three
Line 4
Line five
Run Code Online (Sandbox Code Playgroud)

承诺3

Line ONE
Line 2
Line three
Line 4
Line FIVE
Run Code Online (Sandbox Code Playgroud)

如果要还原提交2 - 您尝试撤消它引入的更改,同时保留提交3中引入的更改.结果将是:

还原提交2

Line ONE
Line two
Line three
Line four
Line FIVE
Run Code Online (Sandbox Code Playgroud)

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