如何删除SVN工作目录中的所有更改?
我有一个SVN工作目录。我在那个目录中做了一些更改,它显示在中。但是,有没有什么方法可以让我删除其中的所有更改,然后使用命令行从主干中获取所有内容如何删除SVN工作目录中的所有更改?,svn,Svn,我有一个SVN工作目录。我在那个目录中做了一些更改,它显示在中。但是,有没有什么方法可以让我删除其中的所有更改,然后使用命令行从主干中获取所有内容 svn revert -R . svn up 这将递归地还原当前目录及其下的所有内容,然后更新到最新版本。
svn revert -R .
svn up
这将递归地还原当前目录及其下的所有内容,然后更新到最新版本。
rm -rf *
svn update
但是,不,真的,不要这样做,除非你真的确信太空核武器选项是你想要的!!这样做的好处是,还可以清除所有构建错误、临时文件以及SVN忽略的内容
更正确的解决方案是使用revert命令:
svn revert -R .
R导致subversion递归并还原当前工作目录中及其下的所有内容
svn status | grep '^M' | sed -e 's/^.//' | xargs rm
svn update
将删除任何已修改的文件。我似乎记得在添加文件和目录时,在还原方面遇到了问题。这里的答案都不是我想要的。以下是我的想法:
# Recursively revert any locally-changed files
svn revert -R .
# Delete any other files in the sandbox (including ignored files),
# being careful to handle files with spaces in the name
svn status --no-ignore | grep '^\?' | \
perl -ne 'print "$1\n" if $_ =~ /^\S+\s+(.*)$/' | \
tr '\n' '\0' | xargs -0 rm -rf
在Linux上测试;可以在Cygwin中工作,但依赖于(我相信)一个特定于GNU的扩展,该扩展允许xargs基于'\0'
而不是空格进行拆分
上述命令的优点是,它不需要任何网络活动来重置沙箱。您完全得到了以前所拥有的,并且丢失了所有更改。(在有人指责我这段代码破坏了他们的工作之前的免责声明);-)
我在一个持续集成系统上使用这个脚本,我希望确保在运行一些测试之后执行一个干净的构建
编辑:我不确定这是否适用于所有版本的Subversion。不清楚
svn status
命令的格式是否始终一致。使用此命令时,请自行承担风险,就像任何使用此类总括命令的命令一样。我结合其他人的答案提出了此解决方案:
恢复正常的局部SVN更改
删除任何其他更改,并支持删除带有空格等的文件/文件夹。
别忘了从SVN获取最新的文件
可以使用以下命令还原所有本地更改:
svn st -q | awk '{print $2;}' | xargs svn revert
如果您在windows上,以下for循环将还原对工作区所做的所有未提交的更改:
for /F "tokens=1,*" %%d in ('svn st') do (
svn revert "%%e"
)
如果要删除所有未提交的更改和所有未版本化的对象,则需要2个循环:
for /F "tokens=1,*" %%d in ('svn st') do (
svn revert "%%e"
)
for /F "tokens=1,*" %%d in ('svn st') do (
svn rm --force "%%e"
)
我经常使用这个技巧,但在SVN1.7中,元数据只存储在WC根目录中,这不再是干净的解决方案。例如,已删除的文件仍会被删除。
svn-nuke from space
请注意,这不适用于外部(它们似乎被忽略)。非常感谢Shaize,这是最优雅的sed。。。到目前为止,我已经看到了管道:)特别是要注意忽略。工作起来很有魅力。谢谢如果您还想删除被忽略的文件-svn cleanup,则不会删除*.class文件等--remove ignored
我收到svn revert的错误消息“参数不足”
svn st -q | awk '{print $2;}' | xargs svn revert
for /F "tokens=1,*" %%d in ('svn st') do (
svn revert "%%e"
)
for /F "tokens=1,*" %%d in ('svn st') do (
svn revert "%%e"
)
for /F "tokens=1,*" %%d in ('svn st') do (
svn rm --force "%%e"
)
svn revert -R .
svn cleanup . --remove-unversioned