获取 Git 控制的文件夹中所有未版本化文件的列表

问题描述 投票:0回答:4

在 Git 控制的文件夹中获取未版本控制的文件列表比它需要的更烦人。除非我真的不擅长阅读手册页,否则看起来 Git 并没有提供自己执行此操作的工具。

可能有一种更优雅的方式来执行此操作,但这里是我为这项任务整理的一行语句,以防其他人需要使用它。

编辑:事实证明,有一种标准方法可以做到这一点,而且效果很好。

git ls-files --other [--exclude-standard]
git bash unix version-control grep
4个回答
19
投票

或者...

git clean -dnx | cut -c 14-

如果您不想看到被忽略的文件,

git clean -dn | cut -c 14-

9
投票

实际上,如果您将

git clean
-n
--dry-run
选项一起使用,它将打印出一个未跟踪文件列表,如果您使用
-f
--force
选项运行它,它会删除这些文件。添加
-d
标志包括空目录或仅包含未跟踪文件的目录。

因此您可以从 git 存储库中运行此命令:

$ git clean -dn

并获得如下输出:

Would remove dir/untracked_file_1.txt
Would remove untracked_file_2.txt

这里有一个好处:它也尊重您的 .gitignore 文件,但如果您添加

-X
标志,它只会列出忽略的文件。


1
投票

哇,这篇文章已经快10年了!对 git 命令行不太了解,但尝试这个命令我在本地存储库中获取了所有未跟踪/未版本化的文件:

git status

并获得如下输出:

On branch main
Your branch is up to date with 'origin/main'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        /untracked_file_1.xxx
        /../untracked_file_2.xxx

0
投票
diff <(echo "`git ls-tree -r master | sed 's/.*\t//g'`") <(echo "`find . -type f`") | grep '> .*' | cut -c 3-
© www.soinside.com 2019 - 2024. All rights reserved.