是否有一个Subversion命令可以将工作副本"重置"到存储在存储库中的状态?类似的东西git reset --hard或(ha,硬Git重置也不会删除未版本控制的文件!)rm -rf wc && svn co <url> wc.
更新:我不是在简单的还原之后,因为它不会删除工作副本中的额外文件.我真的想要的东西与删除工作副本并再次检出它一样,只需要不必再次下载数据.(显然我不介意丢失所有未提交的更改.)
vcs*_*nes 173
你可以像这样递归恢复:
svn revert --recursive .
没有办法(没有编写创意脚本)删除不受源代码管理的东西.我认为你最接近的是遍历所有文件,然后使用grep结果svn list,如果grep失败,则删除它.
编辑:创意脚本的解决方案在这里:自动删除Subversion无版本文件
因此,您可以创建一个脚本,该脚本将revert链接问题中的任何答案组合在一起,最适合您.
小智 36
svn revert . -R
Run Code Online (Sandbox Code Playgroud)
svn status | rm -rf $(awk '/^?/{$1 = ""; print $0}')
Run Code Online (Sandbox Code Playgroud)
在-rf5月/应该看看吓人,但一旦了解它不会是这些原因:
rm-rf是必需的,否则这些目录将不会被删除svn revert . -R && svn status | rm -rf $(awk '/^?/{$1 = ""; print $0}')
Run Code Online (Sandbox Code Playgroud)
为.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) ;)'
Run Code Online (Sandbox Code Playgroud)
小智 22
使用以下方法删除本地副本中的所
rm -r your_local_svn_dir_path/*
Run Code Online (Sandbox Code Playgroud)
并使用以下命令递归恢复所有内容.
svn revert -R your_local_svn_dir_path
Run Code Online (Sandbox Code Playgroud)
这比删除整个目录然后重新结账更快,因为文件正在从您本地的SVN元数据中恢复.它甚至不需要网络连接.
svn revert . -R
Run Code Online (Sandbox Code Playgroud)
重置一切.
svn revert path/to/file
Run Code Online (Sandbox Code Playgroud)
对于单个文件
删除未版本控制的文件并还原所有更改:
svn revert D:\tmp\sql -R
svn cleanup D:\tmp\sql --remove-unversioned
Run Code Online (Sandbox Code Playgroud)
出:
D D:\tmp\sql\update\abc.txt
Run Code Online (Sandbox Code Playgroud)