在 Git 控制的文件夹中获取未版本控制的文件列表比它需要的更烦人。除非我真的不擅长阅读手册页,否则看起来 Git 并没有提供自己执行此操作的工具。
可能有一种更优雅的方式来执行此操作,但这里是我为这项任务整理的一行语句,以防其他人需要使用它。
编辑:事实证明,有一种标准方法可以做到这一点,而且效果很好。
git ls-files --other [--exclude-standard]
或者...
git clean -dnx | cut -c 14-
如果您不想看到被忽略的文件,
git clean -dn | cut -c 14-
实际上,如果您将
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
标志,它只会列出忽略的文件。
哇,这篇文章已经快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
diff <(echo "`git ls-tree -r master | sed 's/.*\t//g'`") <(echo "`find . -type f`") | grep '> .*' | cut -c 3-