撤消SVN添加而不恢复本地编辑


157

我不小心运行svn add *并添加了不应在存储库中的一堆文件。我还想保留一些文件中的本地编辑内容。是否有一种简单的方法来撤消svn add而不恢复本地编辑?我在Google上看到的主要建议是svn revert,该建议可能会撤消本地编辑。

Answers:


282

那将是:

svn rm --keep-local

这样的事情我也经历过。:-P

许多人评论您应该使用:

svn rm --keep-local FILENAME

将命令应用于一个或多个文件,而不是所有文件,这可能会产生意想不到的副作用。


1
这对我没有影响。我从基本文件夹中运行了上述代码(包括尾随时间)。不知道我是否想念一些东西。
zzz 2012年

8
请注意,您必须将文件名添加到命令中,这样就可以了svn rm --keep-local FILENAME。在FILENAME可以使用*来匹配多个文件(如果你幸运地拥有一个模式)。
亚当·巴杜拉

4
警告!-在使用svn externals的同时使用此命令也将删除所有连接的外部...
kostja,2013年

2
如果提交,提交是否不包括从存储库中删除有问题的文件?
jwg 2014年

1
//,我和jwg有相同的问题。我对SVN受控文件进行了一些编辑。我想将这些编辑保留在本地。但是,我并不想完全从仓库中删除文件。我只是不想将本地编辑推送到文件中。
弥敦道(Nathan Basanese)2015年

34

如果这些文件位于尚未提交的目录下,则可以通过执行以下操作从下一次提交中删除整个目录内容:

svn delete --keep-local /path/to/directory

但是,如果这些文件已在存储库中,并且现在包含您不想提交的更改,则可以使用更改列表来提交其余文件:

svn changelist somename /file/to/be/committed
svn commit --changelist somename

7

您可以通过以下方式来解决结帐问题:

  1. 备份本地文件
  2. 还原SVN结帐
  3. 恢复文件

--

rsync -av --exclude .svn/ YOURDIR/ YOURDIR.bak
svn revert -R YOURDIR
rsync -av YOURDIR.bak/ YOURDIR 

YOURDIR/YOURDIR/尽管我认为问题出在最初的备份命令create中,但最终命令总是创建一个额外的目录级别,即以结尾YOURDIR.bak/YOURDIR/
詹姆斯

为避免这种情况,rsync要求在源目录上添加一个斜杠。我编辑了答案。
布莱斯·登普西

3

我有同样的问题,我不小心添加了一个/ bin目录svn add,其中包含二进制文件和已编译的文件。该命令实际上删除目录。

svn rm --force <directory-name>

就我而言,我不需要目录,因此可以安全删除。如果要保留文件/目录的保存,则在应用命令之前以及将它们复制回之后保存到某个位置

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.