当前位置:  开发笔记 > 编程语言 > 正文

从SVN恢复已删除文件的正确方法是什么?

如何解决《从SVN恢复已删除文件的正确方法是什么?》经验,为你挑选了6个好方法。

我从回购中删除了一个文件,现在想把它放回去.我能想到的最好的是:

在删除之前更新到修订版

将文件复制到别处

更新到头

将文件复制回来

添加它们

承诺

这只是闻起来很糟糕而且它失去了所有历史记录.必须有一个更好的方法来做到这一点.我已经查看过SVN Book,但没有找到任何内容,现在正在查看SVN标签列表.



1> tekumara..:

按照Sean Bright的建议进行svn合并的问题是,重新引入与删除相同的修订版中所做的其他更改.svn副本是一种更有针对性的操作,只会影响已删除的文件.

使用Tortoise SVN,您可以通过svn副本恢复已从工作副本目录和后续SVN版本中删除的文件,如下所示:

浏览到以前包含该文件的工作副本文件夹.

在资源管理器中右键单击该文件夹,转到TortoiseSVN - >显示日志.

在删除文件的修订版之前右键单击修订版号,然后选择"浏览存储库".

右键单击已删除的文件,然后选择"复制到工作副本..."并保存.

已删除的文件现在将位于工作副本文件夹中.要重新添加回SVN,请右键单击恢复的文件,然后选择SVN Commit.

注意:此方法将保留已还原文件的先前历史记录,但要查看TortoiseSVN日志中的先前历史记录,您需要确保在"日志消息"对话框中取消选中"停止复制/重命名".


这也可以直接在服务器上执行,如果删除的文件或文件夹非常大,则非常有用:`svn cp -r 1993 http://example.com/svn/trunk/path@1993 http://example.com/ SVN /中继/ path`
在我看来这应该是接受的答案!

2> Sean Bright..:

使用svn merge:

svn merge -c -[rev num that deleted the file] http://

举个例子:

svn merge -c -12345 https://svn.mysite.com/svn/repo/project/trunk
             ^ The negative is important

对于TortoiseSVN(我认为...)

右键单击资源管理器,转到TortoiseSVN - >合并...

确保选中"合并一系列修订版本",然后单击"下一步"

在"要合并的修订范围"文本框中,指定删除该文件的修订

选中"反向合并"复选框,单击"下一步"

单击"合并"

然而,这完全没有经过考验.


由OP编辑:这适用于我的TortoiseSVN版本(没有下一个按钮的旧版本)

转到相关内容的文件夹

右键单击资源管理器,转到TortoiseSVN - >合并...

在" 从"部分中输入执行删除的修订

节之前删除输入的修订.

点击"合并"

承诺

诀窍是向后合并.荣誉对sean.bright指着我在正确的方向!


编辑:我们正在使用不同的版本.我描述的方法与我的TortoiseSVN版本完美配合.

另外值得注意的是,如果提交中存在多个更改,则您将进行反向合并,一旦在提交之前完成合并,您将希望还原其他更改.如果不这样做,那些额外的改变也将被逆转.



3> gbarry..:

为了完整,这是你在svn书中找到的,如果你知道要寻找什么.这是你已经发现的:

撤消更改

恢复已删除的项目

同样的事情,从本书的最新(和详细)版本:

撤消更改

恢复已删除的项目


只是去表明大多数问题是知道要寻找什么.

4> 小智..:

使用Tortoise SVN复制功能还原提交的更改:

    右键单击包含已删除文件/文件夹的父文件夹

    选择"显示日志"

    选择并右键单击已完成更改/删除的版本

    选择"浏览存储库"

    选择需要恢复的文件/文件夹,然后单击鼠标右键

    选择"复制到",将文件/文件夹复制到头版本

希望有所帮助



5> NullPoiиteя..:

我似乎总是使用svn copy作为服务器操作,因此不确定它是否适用于两个工作路径.

以下是将已删除的文件还原到项目的本地工作副本的示例:

svn copy https://repos/project/modules/module.js@3502 modules/module.js

在项目目录中.这也适用于恢复整个目录.


+1副本@工作.复制-r似乎无法在Mac OSX下使用CollabNet svn 1.6.17.
使用的修订也应该是修订版权_在删除之前.

6> davogones..:

如果您正在使用Tortoise SVN,您应该能够将仅从该修订版本更改为您的工作副本(有效执行反向合并),然后再执行一次提交以重新添加该文件.要遵循的步骤是:

    浏览到删除文件的工作副本中的文件夹.

    转到repo-browser.

    浏览到删除文件的修订版.

    在更改列表中,找到您删除的文件.

    右键单击该文件,然后转到"从此版本还原更改".

    这会将文件还原到您的工作副本,保留历史记录.

    提交文件以将其添加回存储库.

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有