什么,我团队中的某人犯了一个“错误”,以在团队存储库的当前修订中删除几个文件。是否可以将当前本地版本更新为Head修订版?当我单击“提交”时,子插图没有识别丢失的文件来上传它们。

提前致谢,
雷特

有帮助吗?

解决方案

哦,因为对皮特的热爱!到目前为止,答案充其量是误导性的。

从您的问题中,听起来您正在尝试这样的事情:

svn update -r8
# ok, I can see the deleted file now
svn commit -m "I want r8 to be newest"

除了那行不起作用。没有任何修改要提交。您可以更新到较旧的修订,但是您不能在此进行更改。你不能改变过去。您只能进行新的修订,消除损坏。

好的,假设您的存储库位于svn:// repo。在这里,一个简化的示例其中,文件夹中包含两个文件“ A”和“ B”。我们称此修订版8(R8)。

trunk    # working copy of svn://repo/trunk
    a
    b

JR黑客,滑倒并意外删除B:

svn rm b
svn commit -m "oops"

让我们调用结果提交R9。

因此,下次您从存储库进行更新时,

svn update

trunk
    a

b消失了!恐慌?否。这是一个版本控制系统。可以恢复所检查的任何东西。这是两种可能性:

只是 复制 该文件来自较旧的修订版,即仍然存在的最后一个修订:8。

svn cp svn://repo/trunk/b@8 .
svn commit -m "restored b from revision 8"

更通用的解决方案是使用 合并. 。您可以使用此技术不仅仅是流浪删除。

svn merge -r9:8 . .
svn commit -m "reverted the changes made in revision 8"

阅读此合并的方法是:

首先找出与当前目录(第一个“。”)关联的存储库文件夹(svn:// repo/trunk)的R9(返回)到R8的需要进行的更改。现在,在当前目录中的工作副本(第二个“。”)上执行这些更改。

如果您只是重新恢复单个更改,则有一个更方便的语法:

svn merge -c-8  . . #note the minus sign before the 8

如果您不使用命令行中的SVN,请在工具周围戳一下,您一定会找到一些东西。例如,当您从工作副本打开日志时,Tortoisesvn具有方便的“从此修订版中恢复更改”。

其他提示

从某个地方的修订中获取删除的IN-SVN文件的副本(例如,桌面上的临时文件夹),然后更新(根据您的同事的承诺删除操作,将删除原始文件,然后将副本移回去并将他们归还给SVN。

我会做以下操作:

在删除之前查找修订号...进行SVNADMIN转储-R1:[goodRevisionNumber there]> file.dump。

然后,创建一个新的存储库“ svnadmin创建[存储库名称]”,然后将转储加载到新的存储库中。 “ svnadmin load [newRepositoryName] <file.dump。

然后,查看此修订版,然后将文件从旧结帐中复制到新文件并提交。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top