处理空文件夹

git 不识别文件夹的概念,它只适用于文件及其文件路径。这意味着 git 不会跟踪空文件夹。然而,SVN 确实如此。使用 git-svn 意味着,默认情况下,使用 git 执行涉及空文件夹的任何更改都不会传播到 SVN

发出注释时使用 --rmdir 标志可以解决此问题,如果你在本地删除其中的最后一个文件,则会删除 SVN 中的空文件夹:

git svn dcommit --rmdir

不幸的是,它不会删除现有的空文件夹 :你需要手动执行此操作。

为了避免在每次进行 dcommit 时添加标记,或者如果使用 git GUI 工具(如 SourceTree)可以安全地使用它,则可以使用以下命令将此行为设置为 default:

git config --global svn.rmdir true

这会更改 .gitconfig 文件并添加以下行:

[svn]
rmdir = true

要删除所有应保留为 SVN 的未跟踪文件和文件夹,请使用 git 命令:

git clean -fd

请注意:上一个命令将删除所有未跟踪的文件和空文件夹,甚至是 SVN 应该跟踪的文件! 如果需要生成 againg SVN 跟踪的空文件夹,请使用该命令

git svn mkdirs

在实践中,这意味着如果要从未跟踪的文件和文件夹中清除工作区,则应始终使用这两个命令重新创建 SVN 跟踪的空文件夹:

git clean -fd && git svn mkdirs