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