将SVN中的单个文件恢复为特定版本

问题描述 投票:168回答:14

我有一个SVN仓库中显示的文件,我想恢复到以前的版本。在SVN中执行此操作的方法是什么?我只想将此特定文件降级为旧版本,而不是整个仓库。

谢谢。

$ svn log myfile.py
----------------------
r179 | xx | 2010-05-10

Change 3
----------------------
r175 | xx | 2010-05-08

Change 2
----------------------
r174 | xx | 2010-05-04

Initial
svn revert
14个回答
179
投票

如果您只想要工作副本中的旧文件:

svn up -r 147 myfile.py

如果要回滚,请参阅此“How to return to an older version of our code in subversion?”。


4
投票

只是添加@Mitch Dempsy答案,因为我还没有足够的回复评论。

svn export -r <REV> svn://host/path/to/file/on/repos --force

添加--force将使用导出覆盖本地副本,然后您可以执行svn提交将其推送到存储库。


4
投票

惊讶没有人提到这个

没有找到你可以编写的修订版号,如果你刚提交了你要恢复的东西,如果你改变了一些其他文件并且目标文件不是最后一个更改的文件,这将不起作用

svn merge -r HEAD:PREV file

1
投票

单个文件的备用选项是使用旧版本“替换”当前版本的文件:

svn rm file.ext
svn cp svn://host/path/to/file/on/repo/file.ext@<REV> file.ext
svn ci

这具有附加功能,即不需要的更改不会显示在此文件的日志中(即svn log file.ext)。


1
投票

如果要从特定修订回滚单个文件并能够提交,请执行以下操作:

svn merge -c - [OldRev#] [Filename]

府。 Ku zxsw指出

请注意修订号的否定


-1
投票
svn merge -c -150 myfile.py

这是还原单个文件的更好方法


67
投票

svn cat也需要修改arg!

svn cat -r 175 mydir/myfile > mydir/myfile


56
投票
svn revert filename 

这应该还原一个文件。


50
投票

对于单个文件,您可以执行以下操作:

svn export -r <REV> svn://host/path/to/file/on/repos file.ext

你可以做svn revert <file>,但这只会恢复最后一份工作副本。


19
投票

到目前为止,这里的所有答案似乎都有明显的缺点,很复杂(需要找到repo URI)或者他们没有做可能要求的问题:如何使用旧版本的旧版本再次使Repo处于工作状态文件。

svn merge -r head:[revision-number-to-revert-to] [file-path]是IMO最干净,最简单的方法。请注意,恢复已删除的文件似乎不会以这种方式工作[1]。另见以下问题:Better way to revert to a previous SVN revision of a file?

[1]为此你想要svn cp -r [rev-number] [repo-URI/file-path]@[rev-number] [repo-URI/file-path] && svn up,另见What is the correct way to restore a deleted file from SVN?


13
投票

最好的方法是:

svn merge -c -RevisionToUndo ^/trunk

这将撤消修订的所有文件,而不是简单地还原那些您不想撤消的文件。不要忘记破折号(-)作为修订的前缀。

svn revert File1 File2

现在提交更改。


7
投票

我发现通过svn cat命令执行此操作非常简单,因此您甚至不必指定修订版。

svn cat mydir/myfile > mydir/myfile

这可能不会影响时间戳等inode(元数据)数据。


7
投票

你想做

svn merge -r [revision to revert from]:[revision to revert to] [path/filename]

一旦这样做,您将使该文件的修订版处于可提交状态。提交文件。


4
投票

如果它只是几个文件,并且如果您使用的是Tortoise SVN,则可以使用以下方法:

  1. 右键单击源文件,然后选择“TortoiseSVN” - >“显示日志”。
  2. 右键单击日志中的修订,然后选择“将修订保存到...”。
  3. 让旧版本覆盖当前文件。
  4. 提交覆盖的源文件。
© www.soinside.com 2019 - 2024. All rights reserved.