2011-11-01 109 views
1

所以我有一个本地生成文件。SVN:恢复提交,同时保留本地更改

它不应该在SVN中,但它是。 (谢谢,以前的维护者!)但是对本地副本进行了更改,仅适用于构建它的盒子。

我搞砸了,并提交这个本地构建文件。现在SVN回购副本具有这些本地更改;这不好。

我怎样才能回到原状,当地的变化是在本地副本,而不是在SVN回购协议,随后svn update不会覆盖本地更改?

回答

2
  1. 将文件与本地更改备份在某处。
  2. 做的文件显示日志,和之前的不必要的更改(使用更新与给定的版本号)
  3. 提交的文件
  4. 更新整个工作副本
  5. 恢复恢复该文件的修订在步骤1完成的备份

您可以使用更改列表或锁定文件以避免再犯同样的错误。

+0

感谢您的回答。但是,严重的是,SVN中没有更简单的方法?我*不能*是第一个做这件事的人(白痴)。 – tpdi

+0

我真的不知道它可能会更容易。您需要保留本地更改,因此需要进行备份。你需要恢复到以前的版本,所以你必须告诉哪个版本。 SVN无法为你猜出它。通常,如果某个文件不应该提交,它不应该在SVN中。 –

+0

>通常,如果某个文件不应该被提交,它不应该在SVN中。真正的数据。 ;( – tpdi

0
  1. 不能在WC存储“地方只有”变化,如果更改的文件版本(除添加设置为忽略列表)
  2. 您可以撤消任何一次提交(S)通过反向合并
0

对于我这样一个原理:

> svn st 
M  0027 
> svn info 0027 | grep URL 
URL: svn://localhost/xxx/trunk/0027 
> svn rm -m "remove accidently checked in file" svn://localhost/xxx/trunk/0027 
Revision ... 
> svn update 
    C 0027 
At revision 42. 
Summary of conflicts: 
    Tree conflicts: 1 
> svn revert 0027 
Reverted '0027' 
> svn status 
?  0027 

所以文件0027还活着,有它的旧内容,但不是在回购了。

0

如果你的文件不应该进行版本控制,你可以取消它的版本:

svn rm --keep-local filename 

这将让任何本地文件,但SVN将停止跟踪它。