````git clean```没有删除子目录(不是递归的)

时间:2011-05-04 07:23:37

标签: git

我遇到git clean的问题。 请考虑以下情形:

git status -su
?? file_1
?? xyz/file_2

git clean -f
Not removing xyz/file_2
Removing file_1

我不想删除xyz文件夹,但我想删除其中的file_2

为什么git clean不能递归工作?

5 个答案:

答案 0 :(得分:41)

如果忽略它,请使用git clean -xf。您可以执行git clean -xdf,但这也会删除未跟踪的目录。使用-n进行干运行。

http://gitready.com/beginner/2009/01/16/cleaning-up-untracked-files.html

答案 1 :(得分:13)

此外,git clean不能处理目录树。考虑一下

> git status
Untracked files:
  ../file1.orig
  ../../file2.orig

git clean -df在这种状态下什么也不做。你必须'cd'进入项目根目录并再次运行'git clean -df'。

答案 2 :(得分:7)

试试这个:

git clean -xdf

如果有效,请告诉我。

答案 3 :(得分:0)

也许您的xyz文件中有.gitignore目录?您可以使用-x切换为clean来覆盖此行为。此外,如果未跟踪xyz目录(跟踪内部没有任何内容),除非您传递-d选项,否则不会删除它。

答案 4 :(得分:0)

请注意,在寡妇上,即使git clean -xdf也可能失败,并且在无法lstat()的情况下默默地跳过路径;现在(Git 2.23,2019年第三季度),它会发出警告。

请参见commit b09364cJohannes Schindelin (dscho)(2019年7月18日)。
帮助者:René Scharfe (rscharfe)SZEDER Gábor (szeder)Junio C Hamano (gitster)
(由Junio C Hamano -- gitster --commit f3d508f中合并,2019年7月25日)

  

clean:路径过长时显示错误消息

     

lstat()失败时,git clean将中止而没有错误消息,使用户颇为困惑。

     

尤其是在Windows上,默认最大路径长度非常小(尽管在很多情况下,仍有许多方法可以绕过该限制),非常重要的一点是要向用户提供指示,说明为什么它们的命令由于路径太长而失败什么时候做的。

     

此测试用例确保发出警告,该警告会帮助报告git-for-windows/git issue 521的用户

     

请注意,我们在回归测试中暂时设置了core.longpaths = false;这样可以确保与core.longpaths功能的向前兼容,而该功能尚未从Windows的Git上游获得。