我从存储库中删除了一个文件,现在想放回去。我能找出的最好办法是:
- 在删除之前更新到修订版
- 将文件复制到其他地方
- 更新到头
- 复制文件
- 添加他们
- 承诺
这只是难闻的气味,并且会丢失所有启动历史记录。必须有一个更好的方法来做到这一点。我已经看过SVN书,但是什么也没找到,现在正在看SVN标签列表。
我从存储库中删除了一个文件,现在想放回去。我能找出的最好办法是:
这只是难闻的气味,并且会丢失所有启动历史记录。必须有一个更好的方法来做到这一点。我已经看过SVN书,但是什么也没找到,现在正在看SVN标签列表。
Answers:
使用svn merge:
svn merge -c -[rev num that deleted the file] http://<path to repository>
举个例子:
svn merge -c -12345 https://svn.mysite.com/svn/repo/project/trunk
^ The negative is important
对于TortoiseSVN(我认为...)
但是,这完全未经测试。
由OP编辑:这在我的TortoiseSVN版本上有效(旧版本没有下一个按钮)
诀窍是向后合并。向sean.bright致以正确的方向指示我!
编辑:我们使用不同的版本。我描述的方法与我的TortoiseSVN版本完美配合。
还要注意的是,如果要反向合并的提交中有多个更改,则在提交之前,一旦合并完成,您将希望还原其他更改。如果您不这样做,那么这些额外的更改也将被撤消。
正如Sean Bright所建议的那样,进行svn合并的问题在于重新引入了与删除相同版本中所做的其他更改。svn副本是更具针对性的操作,只会影响已删除的文件。
使用Tortoise SVN,您可以通过svn副本恢复从工作副本目录和更高版本的SVN删除的文件,如下所示:
现在,已删除的文件将位于工作副本文件夹中。要将其重新添加回SVN,请右键单击还原的文件,然后选择SVN Commit。
注意:此方法将保留还原文件的先前历史记录,但是要查看TortoiseSVN日志中的先前历史记录,您需要确保在“日志消息”对话框中未选中“复制/重命名停止”。
svn cp -r 1993 http://example.com/svn/trunk/path@1993 http://example.com/svn/trunk/path
merge
,但是我没有弄清楚。
我能够还原文件且不丢失修订历史记录的最简单方法是使用SVN复制,对我而言,上面的合并示例似乎是实现同一件事的更复杂的方法。当您只想还原修订版本时,为什么需要合并?
我在这种情况下使用以下内容,并且效果很好。
svn copy -m 'restoring file' -r <rev_number_file_to_restore> http://from/file.cs http://pathTo/file.cs
我似乎总是svn copy
用作服务器操作,因此不确定它是否可用于两个工作路径。
使用Tortoise SVN:
如果尚未提交更改,则可以在删除文件或目录的父文件夹上进行还原。
如果已经提交了已删除的文件,则可以使用资源库浏览器,更改为该文件仍然存在的修订版本,然后从上下文菜单中使用命令复制到...。输入工作副本的路径作为目标,删除的文件将从存储库复制到工作副本。