我有一个SVN工作目录。我在该目录中做了一些更改,它显示在svn状态中。但是有没有办法让我删除其中的所有更改,只使用命令行从主干中获取所有内容呢?


当前回答

我综合了其他人的答案,得出了这个解决方案:

恢复SVN本地正常变化

svn revert -R .

删除任何其他更改,并支持删除带有空格的文件/文件夹等。

svn status --no-ignore | grep -E '(^\?)|(^\I)' | sed -e 's/^. *//' | sed -e 's/\(.*\)/"\1"/' | xargs rm -rf

不要忘记从SVN获取最新的文件

svn update --force

其他回答

svn status | grep '^M' | sed -e 's/^.//' | xargs rm

svn update

将删除已修改的任何文件。我似乎记得当文件和目录可能已经添加时,在恢复时遇到了麻烦。

我综合了其他人的答案,得出了这个解决方案:

恢复SVN本地正常变化

svn revert -R .

删除任何其他更改,并支持删除带有空格的文件/文件夹等。

svn status --no-ignore | grep -E '(^\?)|(^\I)' | sed -e 's/^. *//' | sed -e 's/\(.*\)/"\1"/' | xargs rm -rf

不要忘记从SVN获取最新的文件

svn update --force

SVN还原将撤销您所做的任何本地更改

如果你没有改变,你总是可以非常彻底和/或懒惰地做……

rm -rf *
svn update

但是,不,真的,不要这样做,除非你真的确定从太空发射核武器是你想要的!!这样做的好处是可以销毁所有构建cruft、临时文件和SVN忽略的东西。

更正确的解决方案是使用revert命令:

svn revert -R .

-R使subversion递归并恢复当前工作目录下及以下的所有内容。

svn revert -R .
svn up

这将递归地恢复当前目录及其下的所有内容,然后更新到最新版本。