git ls-files:如何识别新文件(添加,未提交)?

tan*_*ius 64 git

我打电话git add <file>给命令后git status会给我看:

...
new file:    <file>
Run Code Online (Sandbox Code Playgroud)

不知怎的,我无法通过使用它来管理它来获取相同的信息ls-files,它(ls-files -tc在这种情况下)会告诉我:

H <commited file>
H <other commited file>
H <file>
Run Code Online (Sandbox Code Playgroud)

新文件似乎没有命令行切换.该文件被报告为缓存,这没关系,但是我怎么知道它目前没有提交?

这是可能的ls-files或一些类似的命令(我不必解析大量的输出git status)?

And*_*ett 80

你想用git diff --cached.随着--name-only它将列出您在索引中相对于HEAD更改的所有文件.随着--name-status即可获得身份的象征也与--diff-filter您可以指定要显示哪些文件集("A"为新添加的文件,例如).使用-M开启移动侦测和-C如果你想让他们的拷贝检测.

为了最严格地阅读您所写的内容,git diff --cached --name-only --diff-filter=A将列出自HEAD以来添加的所有文件,这些文件在HEAD中不存在.

  • 谢谢,这就是我想要的.这是一个非常好的答案,甚至包括我需要的所有选项^^ (2认同)
  • 仅供参考:您的“最严格的阅读”不包括“--cached”标志。 (2认同)
  • 为了您的复制乐趣:`git diff --cached --name-only` (2认同)

Mik*_*itz 42

澄清:这是一种显示我打算添加的文件的方法.这不是OP所寻求的,但我会留下这篇文章,以防它对其他人有用.

这似乎只显示我添加[到我的工作副本而不是索引]的文件,但是我的标准忽略模式不匹配:

 $ git ls-files --others --exclude-standard
Run Code Online (Sandbox Code Playgroud)

如果没有--exclude-standard,它还会显示我运行时被忽略的文件git status.


Dan*_*tas 5

获取所有新文件、修改文件和删除文件的简单方法:

git ls-files --others --modified --deleted --exclude-standard
Run Code Online (Sandbox Code Playgroud)

参考官方文档:https://git-scm.com/docs/git-ls-files

如果您希望查看新的/未跟踪的文件,请使用“--others”

如果您想查看修改后的文件,请使用“--modified”

如果您想查看已删除的文件,请使用“--deleted”

--exclude-standard 将排除 .gitignore 中指定的文件