发新帖

[Linux] [其他] [Mac] 在 SVN 中提交已删除的本地文件到服务器

零下一度 10天前 17

一、在 SVN 中提交已删除的本地文件到服务器

当你在本地删除了文件并希望将这个删除操作提交到 SVN 服务器时,需要按照以下步骤操作:

标准步骤

1、使用 svn delete 命令标记删除(如果只是手动删除了文件)

svn delete 文件名

如果你已经手动删除了文件而没有使用 SVN 命令,这条命令会正式告诉 SVN 你想要删除这个文件。

2、提交删除操作

svn commit -m "删除文件说明"

完整流程示例

# 假设你手动删除了文件 example.txt
# 1. 检查状态
svn status
# 你会看到文件标记为 '!' 表示缺失
# !      example.txt
# 2. 正式告诉 SVN 要删除这个文件
svn delete example.txt
# 3. 再次检查状态,现在应该显示为 'D' 表示待删除
svn status
# D      example.txt
# 4. 提交删除操作
svn commit -m "删除不再需要的example.txt文件"

特殊情况处理

如果文件已删除但未提交,又想恢复

svn revert 文件名

如果只想删除本地文件但保留在版本库中

svn export URL/文件路径 本地路径

批量删除多个文件

svn delete 文件1 文件2 文件3
svn commit -m "批量删除多个文件"


二、SVN 批量删除本地不存在的文件

当你手动删除了本地文件(没有使用 svn delete 命令),需要批量将这些删除操作同步到 SVN 版本库时,可以使用以下方法:

方法一:使用 svn status 和 xargs 组合

1、首先查看所有本地缺失的文件(标记为 ! 的文件):

svn status | grep '^!' | awk '{print $2}'

2、将这些文件标记为 SVN 删除:

svn status | grep '^!' | awk '{print $2}' | xargs svn delete

方法二:使用 svn cleanup 和 svn delete

1、清理工作副本:

svn cleanup

2、删除所有缺失的文件:

svn delete $(svn status | grep '^!' | awk '{print $2}')

方法三:Windows 下的批处理命令

如果你在 Windows 上使用命令行:

for /f "tokens=2*" %%i in ('svn status ^| find "!"') do svn delete "%%i"

方法四:交互式确认删除

如果你想先确认要删除的文件列表:

svn status | grep '^!' | awk '{print $2}' > deleted_files.txt

# 检查文件列表

cat deleted_files.txt

# 确认无误后执行删除

xargs svn delete < deleted_files.txt

最后提交变更

完成上述操作后,别忘了提交变更:

svn commit -m "批量删除本地已不存在的文件"










最新回复 (0)
返回
零下一度
主题数
939
帖子数
0
注册排名
1