我在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
答案 0 :(得分:175)
如果您只想要工作副本中的旧文件:
svn up -r 147 myfile.py
如果您想要回滚,请参阅“How to return to an older version of our code in subversion?”。
答案 1 :(得分:63)
svn cat也会进行修订!
svn cat -r 175 mydir/myfile > mydir/myfile
答案 2 :(得分:55)
svn revert filename
这应该还原一个文件。
答案 3 :(得分:50)
对于单个文件,您可以执行以下操作:
svn export -r <REV> svn://host/path/to/file/on/repos file.ext
您可以执行svn revert <file>
,但这只能恢复上一个工作副本。
答案 4 :(得分:18)
到目前为止,这里的所有答案似乎都有明显的缺点,很复杂(需要找到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?
答案 5 :(得分:13)
最好的方法是:
svn merge -c -RevisionToUndo ^/trunk
这将撤消修订版的所有文件,而不是简单地还原那些您不想撤消的文件。不要忘记短划线(-
)作为修订的前缀。
svn revert File1 File2
现在提交更改。
答案 6 :(得分:7)
我发现通过svn cat
命令执行此操作非常简单,因此您甚至无需指定修订版。
svn cat mydir/myfile > mydir/myfile
这可能不会影响时间戳等inode(元数据)数据。
答案 7 :(得分:7)
你想做
svn merge -r [revision to revert from]:[revision to revert to] [path/filename]
一旦这样做,您将使该文件的修订版处于可提交状态。提交文件。
答案 8 :(得分:4)
如果只有几个文件,如果您使用的是Tortoise SVN,则可以使用以下方法:
答案 9 :(得分:4)
加入@Mitch Dempsy答案,因为我还没有足够的回复评论。
svn export -r <REV> svn://host/path/to/file/on/repos --force
添加--force将使用导出覆盖本地副本,然后您可以执行svn提交将其推送到存储库。
答案 10 :(得分:2)
惊讶没有人提到这个
没有找到你可以编写的修订版号,如果你刚刚提交了你想要恢复的东西,如果你改变了一些其他文件并且目标文件不是最后一个更改的文件,这将无法工作
svn merge -r PREV:HEAD file
答案 11 :(得分:1)
如果您要回滚特定版本中的单个文件并能够提交,请执行以下操作:
svn merge -c-[OldRev#] [文件名]
即。 svn merge -c -150 myfile.py
请注意版本号上的否定
答案 12 :(得分:0)
单个文件的另一种选择是用较旧的版本“替换”文件的当前版本:
svn rm file.ext
svn cp svn://host/path/to/file/on/repo/file.ext@<REV> file.ext
svn ci
这具有附加功能,不需要的更改不会显示在该文件的日志中(即svn日志file.ext)。
答案 13 :(得分:0)
sudo svn revert filename
这是还原单个文件的更好方法