是否有一个 Subversion 命令可以将工作副本“重置”到存储库中存储的状态?像 git reset --hard或(哈,硬 Git 重置也不会删除未版本化的文件!)rm -rf wc && svn co <url> wc.
git reset --hard
rm -rf wc && svn co <url> wc
更新: 我不想要简单的恢复,因为这不会删除工作副本中的额外文件。我真的想要一些东西,这将是相同的删除工作副本和检出再次,只是不必下载的数据了。(显然,我不介意失去所有未提交的更改。)
svn revert . -R
重置一切。
svn revert path/to/file
for a single file
You can recursively revert like this:
svn revert --recursive .
There is no way (without writing a creative script) to remove things that aren't under source control. I think the closest you could do is to iterate over all of the files, use then grep the result of svn list, and if the grep fails, then delete it.
svn list
编辑: The solution for the creative script is here: Automatically remove Subversion unversioned files
因此,您可以创建一个脚本,将 revert与链接问题中最适合您的答案结合起来。
revert
从操作系统中删除工作副本并再次检查它是最简单的,但显然不是一个单一的命令。
很快,很简单,做你想做的事
svn status | awk '{if($2 !~ /(config|\.ini)/ && !system("test -e \"" $2 "\"")) {print $2; system("rm -Rf \"" $2 "\"");}}'
The /(config|.ini)/ is for my own purposes.
也许应该在 svn 命令中添加—— no-annon
纯 Windows cmd/bat 解决方案:
svn cleanup . svn revert -R . For /f "tokens=1,2" %%A in ('svn status --no-ignore') Do ( If [%%A]==[?] ( Call :UniDelete %%B ) Else If [%%A]==[I] Call :UniDelete %%B ) svn update . goto :eof :UniDelete delete file/dir IF EXIST "%1\*" ( RD /S /Q "%1" ) Else ( If EXIST "%1" DEL /S /F /Q "%1" ) goto :eof
使用以下方法删除本地副本中的所有内容:
rm -r your_local_svn_dir_path/*
并使用下面的命令递归地恢复所有内容。
svn revert -R your_local_svn_dir_path
这比删除整个目录然后重新签出要快得多,因为这些文件是从您的本地 SVN 元数据还原的。它甚至不需要网络连接。
svn status | rm -rf $(awk '/^?/{$1 = ""; print $0}')
-rf一开始可能看起来很吓人,但一旦理解了它就不会这样了:
-rf
rm
svn revert . -R && svn status | rm -rf $(awk '/^?/{$1 = ""; print $0}')
向.bash _ aliases 添加永久别名
alias svn.HardReset='read -p "destroy all local changes?[y/N]" && [[ $REPLY =~ ^[yY] ]] && svn revert . -R && rm -rf $(awk -f <(echo "/^?/{print \$2}") <(svn status) ;)'
I was able to list all untracked files reported by svn st in bash by doing:
svn st
echo $(svn st | grep -P "^\?" | cut -c 9-)
如果你觉得幸运,你可以用 rm代替 echo来删除未跟踪的文件。或者复制你想要手动删除的文件,如果你觉得不那么幸运的话。
echo
(我使用@abe-voelker 的回答恢复剩余的文件: https://stackoverflow.com/a/6204601/1695680)
删除未版本化的文件并恢复任何更改:
svn revert D:\tmp\sql -R svn cleanup D:\tmp\sql --remove-unversioned
退出:
D D:\tmp\sql\update\abc.txt