Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何删除git svn中的空目录?_Git_Svn_Git Svn - Fatal编程技术网

如何删除git svn中的空目录?

如何删除git svn中的空目录?,git,svn,git-svn,Git,Svn,Git Svn,我有一个具体的问题,我没有找到解决办法,在这里或其他任何地方。我有一个Subversion存储库,我正在使用git svn访问它并处理它 不久前,Subversion存储库中有一些空目录(空的,只有子文件夹)。Git不跟踪这些。然后将它们从Subversion存储库中删除。但即使在运行此命令后,我仍然拥有它们: git svn rebase 当我手动删除它们时,它们将在下一个命令中重新创建: git svn rebase 我怎样才能摆脱它们 我使用纯Subversion进行了检查,但它们不在

我有一个具体的问题,我没有找到解决办法,在这里或其他任何地方。我有一个Subversion存储库,我正在使用git svn访问它并处理它

不久前,Subversion存储库中有一些空目录(空的,只有子文件夹)。Git不跟踪这些。然后将它们从Subversion存储库中删除。但即使在运行此命令后,我仍然拥有它们:

git svn rebase
当我手动删除它们时,它们将在下一个命令中重新创建:

git svn rebase
我怎样才能摆脱它们


我使用纯Subversion进行了检查,但它们不在存储库中。

我想您可以在中找到答案

[……]

如果没有文件,请从SVN树中删除目录 在…的后面SVN可以设置空目录的版本,并且不会删除这些目录 默认情况下,如果没有文件留在其中。git无法更新版本 空目录。启用此标志将使commit to SVN生效 像吉特一样<代码>配置键:svn.rmdir

要解决问题的根源,请全局设置git config:

git config--global svn.rmdir true

[……]


这有点粗糙,但我发现以下方法解决了我的问题:

rm .git/svn/refs/remotes/trunk/unhandled.log
git clean -df
任何后续的

git svn rebase
不会重现任何东西


由于我不知道如何在不重新克隆repo的情况下重新生成此文件,我建议先对其进行备份。它是一个文本文件,因此我想您也可以编辑它的内容以删除最终创建的条目,告诉
git svn
,它不应该尝试重新创建空目录:

git config svn-remote.svn automkdirs false
这是手册页的相关部分:

svn远程..自动mkdirs

通常,“git svn clone”和“git svn rebase”命令会尝试重新创建Subversion存储库中的空目录。如果此选项设置为“false”,则仅当显式运行“git svn mkdirs”命令时,才会创建空目录。如果未设置,git svn将假定此选项为“true”

请注意,很容易将此主题与向SVN提交/不提交空目录的主题混淆(这就是
SVN.rmdir
的目的)。

通过以下方式回答:

修改
~/.gitconfig
以将其添加为默认行为

  [svn]
  # push empty directory removals back to svn as directory deletes
  rmdir = true

这将使删除目录成为默认设置。

Hmmm,这很奇怪。Git根本不知道或跟踪目录。你有没有检查过那些目录中是否有旧的不可见文件,而你的老板在删除这些文件时可能遗漏了这些文件?尝试在目录中执行
ls-la
,以检查隐藏的文件。Midnight Commander不会隐藏内容;)文件夹是空的。这会是一只虫子吗/我对Git有过很多(很多)挫折,但我还没有发现一个合法的“bug”。我的大部分挫折都是由于我缺乏理解。如果从git命令行执行
git status
,会发生什么;文件夹是否显示为“未跟踪”?如果在这些目录上执行
git ls files目录\u name--error unmatch
;它是否返回
true
false
?尝试使用git重新克隆存储库(
git clone
),以查看文件夹是否包含在新克隆中;也许他们只是在老版本上闲逛。我只是在这里胡乱猜测。另外,请检查并确保您位于删除这些文件夹的正确分支(
git branch
,并查找名称旁边的
*
)。它们是否已在其他分支中删除,但尚未合并到您的分支中?(同样,这是非常奇怪的,因为Git非常幸运地不知道任何目录。可能是因为某种方式,
Git svn
处理我不知道的目录)。1)不,Git状态根本不显示它们,毕竟它们是空的,所以Git忽略了它们。。2) git ls files目录\u name--错误取消匹配返回:错误:pathspec“application”与git已知的任何文件都不匹配。你忘了“git add”了吗?3) 在完成frech git svn克隆后。。。他们还在那里,是的,我在右分支,这是一个新项目,所以这里只有树干。我在谷歌搜索时也发现了这个,但这并不是我问题的答案。这适用于删除文件夹并通过git提交的情况。我的问题是,有人通过svn删除了目录,但我仍然将其保存在git存储库中(但它们是空的),当我删除它们时,它们会在下一次重新基址时自动重新创建。我想这并不是真正的“正确做法”,但也许你可以(使用git)将一个虚拟文本文件添加到文件夹中,
添加
提交
以跟踪它们,然后删除(
git rm
)文件并提交删除。然后也许你会删除文件夹,但这会弄脏你的历史记录。顺便问一下,你是否尝试过使用
git clean-fd
删除所有未跟踪的文件和目录?也许这样行。警告:如果您的工作树中有任何未跟踪的文件(新文件)确实要保留,请不要这样做,因为这样做时这些文件也会被删除。修改配置的实际命令是
git config--global svn.rmdir true
博客帖子的链接已失效。不要删除
.git
中的内容。