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
时被忽略的文件。