24

在 Git 控制的文件夹中获取未版本控制的文件列表比它需要的要烦人得多。除非我真的不擅长阅读手册页,否则 Git 似乎不会提供自行执行此操作的工具。

可能有一种更优雅的方式来执行此操作,但这是我为这项任务拼凑起来的一条线,以防其他人需要使用它。

编辑:原来有一种标准的方法可以很好地做到这一点。

git ls-files --other [--exclude-standard]
4

3 回答 3

17

或者...

git clean -dnx | cut -c 14-

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

git clean -dn | cut -c 14-
于 2012-11-07T05:22:24.997 回答
8

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

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

$ git clean -dn

并得到这样的输出:

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

这是一个好处:它也尊重您的 .gitignore 文件,但如果您添加-X标志,它只会列出被忽略的文件。

于 2012-11-07T05:43:02.370 回答
0
diff <(echo "`git ls-tree -r master | sed 's/.*\t//g'`") <(echo "`find . -type f`") | grep '> .*' | cut -c 3-
于 2012-11-07T05:00:29.223 回答