我意外地运行了 svn add *
命令并添加了一堆不应该在仓库中的文件。我还在某些文件中进行了本地编辑,希望保留这些更改。有没有简单的方法只撤销svn add
, 而不撤销本地编辑?谷歌上主要的建议是使用svn revert
命令,但这会撤销本地编辑。
我意外地运行了 svn add *
命令并添加了一堆不应该在仓库中的文件。我还在某些文件中进行了本地编辑,希望保留这些更改。有没有简单的方法只撤销svn add
, 而不撤销本地编辑?谷歌上主要的建议是使用svn revert
命令,但这会撤销本地编辑。
那应该是:
svn rm --keep-local
我也遇到了同样的问题。 :-P
很多人评论说你应该使用:
svn rm --keep-local FILENAME
对一个或多个文件应用该命令。(第一个命令会应用于所有内容,可能会产生意想不到的副作用。)
如果这些文件在一个尚未提交的目录下,你可以通过以下方式从下一次提交中删除整个目录:
svn delete --keep-local /path/to/directory
然而,如果这些文件已经在代码库中,并且现在包含您不想提交的更改,您可以使用变更列表(changelists)提交其余文件:
svn changelist somename /file/to/be/committed
svn commit --changelist somename
rsync -av --exclude .svn/ YOURDIR/ YOURDIR.bak
svn revert -R YOURDIR
rsync -av YOURDIR.bak/ YOURDIR
YOURDIR/YOURDIR/
,尽管我认为问题在于初始备份命令创建了YOURDIR.bak/YOURDIR/
。 - James我曾经遇到相同的问题,我不小心通过使用svn add
命令添加了一个包含二进制文件和编译文件的/directory。然而,这个命令实际上会删除该目录。
svn rm --force <directory-name>
在我这种情况下,我不需要该目录,所以删除它是安全的。如果你想要保留这些文件/目录,请在执行该命令之前将它们保存在另外一个地方,然后再将它们复制回来。
svn rm --keep-local 文件名
。如果你很幸运有一个匹配模式,可以使用*匹配多个文件。请注意,翻译后的内容不应该改变原文的意思,且不应包含任何解释性的内容。 - Adam Badura