【发布时间】:2011-07-02 06:42:22
【问题描述】:
我不小心运行了svn add * 并添加了一堆不应该在存储库中的文件。我还对一些我想保留的文件进行了本地编辑。有没有一种简单的方法可以撤消svn add 而无需还原本地编辑?我在 Google 上看到的主要建议是 svn revert,据说它会撤消本地编辑。
【问题讨论】:
标签: svn
我不小心运行了svn add * 并添加了一堆不应该在存储库中的文件。我还对一些我想保留的文件进行了本地编辑。有没有一种简单的方法可以撤消svn add 而无需还原本地编辑?我在 Google 上看到的主要建议是 svn revert,据说它会撤消本地编辑。
【问题讨论】:
标签: svn
那就是:
svn rm --keep-local
同样的事情也发生在我身上。 :-P
很多人评论说你应该使用:
svn rm --keep-local FILENAME
将命令应用于一个或多个文件,而不是所有文件,这可能会产生意想不到的副作用。
【讨论】:
svn rm --keep-local FILENAME。 FILENAME 可以使用 * 来匹配多个文件(如果你有幸拥有一个模式)。
您可以通过以下方式解决结帐问题:
-
rsync -av --exclude .svn/ YOURDIR/ YOURDIR.bak
svn revert -R YOURDIR
rsync -av YOURDIR.bak/ YOURDIR
【讨论】:
YOURDIR/YOURDIR/ 结尾,尽管我认为问题出在创建YOURDIR.bak/YOURDIR/ 的初始备份命令中。
我遇到了同样的问题,我不小心通过svn add 添加了一个包含二进制文件和编译文件的/目录。该命令实际上删除了目录。
svn rm --force <directory-name>
就我而言,我不需要该目录,因此可以安全删除。如果你想在应用命令之前保存文件/目录,然后将它们复制回来
【讨论】:
如果这些文件位于尚未提交的目录下,您可以通过执行以下操作从下一次提交中删除整个目录内容:
svn delete --keep-local /path/to/directory
但是,如果这些文件已经在存储库中并且现在包含您不想提交的更改,您可以使用更改列表提交其余文件:
svn changelist somename /file/to/be/committed
svn commit --changelist somename
【讨论】: