Git 处理空文件夹

示例

git无法识别文件夹的概念,它仅适用于文件及其文件路径。这意味着git不会跟踪空文件夹。但是,SVN可以。使用git-svn意味着,默认情况下,  您所做的涉及git空文件夹的更改都不会传播到SVN

--rmdir在发表评论时使用标记可以更正此问题,如果您在本地删除其中的最后一个文件,则可以在SVN中删除一个空文件夹:

git svn dcommit --rmdir

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

为了避免每次执行dcommit时都添加标志,或者在使用git GUI工具(例如SourceTree)时为了安全起见,可以使用以下命令将此行为设置为默认行为:

git config --globalsvn.rmdirtrue

这将更改您的.gitconfig文件并添加以下行:

[svn]
rmdir = true

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

git clean -fd

请注意:上一条命令将删除所有未跟踪的文件和空文件夹,甚至包括应该由SVN跟踪的文件!如果您需要再次生成SVN跟踪的空文件夹,请使用以下命令

git svn mkdirs

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

git clean -fd && git svn mkdirs