如何使用Tortoise SVN撤销解决操作?

3
  1. 我修改了本地文件(很多重要的东西)

  2. 我试图提交,但出现了一些冲突

  3. 我刚刚更新(下载远程文件)并解决了冲突(希望它会用我的本地文件/工作副本替换“远程”文件)

它没有像我预期的那样运行。

如何将我的文件恢复到第一个步骤后的状态?

2个回答

6
很遗憾,如果你已经将冲突标记为已解决,则无法实现。一旦发生这种情况,冲突文件的三个版本(你的、仓库的和它们的共同祖先)将合并为一个版本(你说是解决冲突的版本),并从你的工作副本中删除。
看起来你误解了解决冲突的目的。冲突解决不会修改存储库中的任何内容;它完全是在你的本地机器上进行的操作。

2
嗯,我丢失了我的文件。 - arthur.sw
1
是的,“解决”并不能解决任何问题!它只会在发生冲突的文件中制造混乱,从而使SVN忽略它仍处于冲突状态的事实!“永久忽略冲突”可能更适合这个无意义的操作。 - Matt Arnold

0

如果您没有从回收站中删除SVN使用其所谓的“解决”功能删除的文件,那么可以使用VsDiffMerge逐个文件完成。每个冲突文件都会有一个相应的.mine.r1234(其中1234是由SVN生成的数字(显然仅从它所代表的代码递增!))。

对于每个文件,请按照以下步骤操作:

  1. 从回收站中恢复 .mine.r1234 文件
  2. 打开命令提示符
  3. cd 到这些文件被恢复的目录中(例如:cd "C:\My Code\Project 1\My File.cs"
  4. 找到您安装的 Visual Studio 的 vsDiffMerge.exe(对于 Visual Studio 2019,它通常位于:"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\vsDiffMerge.exe")
  5. 按照以下方式运行 vsDiffMerge.exe(适用于 Visual Studio 2019): C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\vsDiffMerge.exe /m "My File.cs.r1234" "My File.cs.mine" "My File.cs.mine" "My File.cs"
  6. 现在应该会出现一个 Visual Studio 实例,允许您真正解决 .r1234 文件和 .mine 文件之间的冲突,并将合并后的结果保存到 SVN 通过其虚假解决程序搞砸的 .cs 文件中!

只是补充一下,如果你不想逐个文件地执行所有这些步骤,你可以恢复所有的.r1234.mine文件,并编写一个命令提示符程序,在同一文件夹中有相应的.mine.r1234文件的任何.cs文件上调用vsdiffmerge。 - Matt Arnold
以下批处理脚本也可能很有用:"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\vsDiffMerge.exe" /m "%~1.r%2" "%~1.mine" "%~1.mine" "%~1"。用法:"My Batch File.bat" "My Source Code.cs" 1234,其中1234是.r扩展文件末尾的数字。 - Matt Arnold

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接