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

在我调用git add <file>git status命令会显示如下内容:

 ... new file: <file> 

不知怎的,我不能通过使用ls-files来pipe理它,它( ls-files -tc在这种情况下)会告诉我:

 H <commited file> H <other commited file> H <file> 

似乎没有命令行切换为新的文件存在。 该文件被报告为caching,这是好的,但我怎么知道这是不是在这个时候提交?

这是可能的ls-files或类似的命令(我不需要像git status的情况下parsing大量的输出)?

你想使用git diff --cached 。 使用--name-only列出您在索引中相对于HEAD所更改的所有文件。 使用--name-status您也可以获取状态符号,使用--diff-filter可以指定要显示的文件集(例如,新添加的文件为“A”)。 如果需要,使用-M打开移动检测function, -C使用复制检测function。

git diff --cached --name-only --diff-filter=A会列出HEAD中不存在的所有文件。

澄清:这是显示我打算添加的文件的一种方法。 这不是OP正在寻找的东西,但是我会离开这个post,以防其他人使用。

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

  $ git ls-files --others --exclude-standard 

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