使用git时如何查找所有空文件夹和未跟踪的文件?

kittygirl

根据这篇文章这篇文章
git ls-files --others --exclude-standard可以列出所有未跟踪的文件
但我对其进行了测试,无法列出空文件夹(已跟踪和未跟踪)。

例如,无法列出空文件夹archiver folder,如下所示:

.
├── admin.php
├── api
│   ├── index.htm
│   └── remote
│       └── mod
│           ├── index.htm
│           ├── mod_cron.php
│           └── mod_index.php
└── archiver folder

然后我的问题是:如何列出所有未跟踪的文件和空文件夹

星期二

TL; DR:仅查找空目录。您可以安全地删除它们-好吧,“安全”取决于您自己的软件,但是就Git而言,它是安全的。(请注意缺少的文件,请参阅下面的“丢失”的定义,这可能会删除Git以后想要的目录,但这没关系,因为Git会再次创建它。)

在Unix / Linux系统上(已编辑以纠正转录中丢失的单词):

find . -name .git -prune -o -type d -empty -print

(在工作树的顶层)将找到空目录。

长(ish)

Git对文件夹/目录不感兴趣。没有跟踪文件夹的方式与没有跟踪文件夹的方式相同:Git只关心文件具体来说,文件位于索引中,也可以不在索引中,如果文件不在索引中,则该文件不会被跟踪。

当您使用各种选项列出未跟踪的文件(由于您通常希望跳过未跟踪和忽略的文件)时,Git有时会将某个文件夹中的所有文件汇总在一起,请注意在该文件夹中没有被跟踪的文件,并使用汇总符号报告它们。您可以使用例如停止此操作git status --untracked-mode=all那么您将获得各个文件名。

请注意,可能有一些文件被跟踪,但是丢失了例如,假设sub/README.txt是一个跟踪文件,并且实际上存在。然后我们跑rm sub/README.txt该文件sub/README.txt遗体在Git的索引,在未来的承诺,但它缺少。如果那是您的工作树中唯一的文件subsub则现在为空,您可以使用删除它rmdir sub尽管sub/README.txt遗体失踪(和sub!也消失),不影响下一个承诺:将仍然包含sub/README.txt,因为该文件在索引中。(如果需要的话git rm --cached sub/README.txt,也可以使用,将其从索引中删除。)

如果并且当Git打算sub/README.txt从索引中复制回工作树时,Git将在此时发现没有subGit只会耸耸肩,创建目录sub,然后放入目录sub/README.txt所以这就是为什么Git对文件夹/目录不感兴趣的原因:它们只是无聊而枯燥,仅在需要保存文件时才需要,它们是按需创建的。

如果要Git创建目录,则需要在其中存储文件。由于由Git管理的程序需要能够忽略名为的文件.gitignore,所以这是一个很好的文件名,可以保留在这样的目录中。您可以写入*该文件,并将其添加到提交中,这样Git将创建目录并.gitignore在其中写入一个包含文件*,从而自动忽略该目录中所有其他未跟踪的文件。

旁注:通常,当Git某个目录中提取最后一个文件,它也会删除该目录,但是偶尔我会看到它留下了一些内容。(当然,如果它仍然包含一些未跟踪的文件,则必须将目录留在后面。请注意git clean -fd,尽管它还会删除未跟踪的文件,但将删除空目录。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

git:如何忽略所有当前未跟踪的文件?

提交空文件夹结构(使用git)

如何递归删除PowerShell中的所有空文件夹?

Git将文件夹视为文件,并忽略所有子文件夹和-files

git将所有未跟踪的文件和文件夹移到git目录之外吗?

如何获取git递归列出所有未跟踪的文件?

如何查找使用Python在特定文件夹中今天创建的所有文件

如何防止Node JS服务.git文件夹和.git下的所有文件

如何在Linux中递归删除所有空文件和目录?

检查文件夹中是否有空文件

如何在特定目录中查找所有空文件和文件夹,包括看起来只是空的文件和不是空文件?

如何使用记事本++查找和替换www文件夹中的所有电子邮件地址

当具有文件夹名称的文件已经存在时,如何创建一个空文件夹?

使用文件夹名称在所有文件夹中创建空文本文件

如何递归访问和删除sh中有空格的特定文件夹中的所有文件?

如何使用PowerShell从文件夹和所有子文件夹中删除所有访问规则?

Git:如何删除所有未跟踪的文件?

删除所有空文件夹,即使其中包含.svn文件夹

如何在git中删除未跟踪的文件和文件夹

如何删除目录中所有空文件?

如何使用 git 跟踪文件夹结构?

埃马克。头盔包。如何在文件夹(不是 git 文件夹)和所有子文件夹中查找文件?

如何使用文件夹名称查找所有文件?

用`$ empty`重命名所有空文件夹

如何使用 s3cmd 列出所有空文件夹

Powershell 查找给定文件夹名称中的所有空文件夹和子文件夹

如何查找和删除空文件夹/仅包含空文件夹

查找共享驱动器中的所有空文件夹并使用 Apps 脚本更改颜色?

查找共享驱动器中的所有空文件夹并使用 Apps 脚本更改颜色?