在我致电git add <file>
后,命令git status
会向我显示如下内容:
...
new file: <file>
不知怎的,我无法通过ls-files
来管理它来获取相同的信息,它(在这种情况下为ls-files -tc
)会告诉我:
H <commited file>
H <other commited file>
H <file>
新文件似乎没有命令行切换。该文件被报告为缓存,这没关系,但我怎么知道它目前没有提交?
这可能与ls-files
或类似命令(我不需要像git status
那样解析大量输出一样)吗?
答案 0 :(得分:75)
您想使用git diff --cached
。使用--name-only
,它将列出您在索引中相对于HEAD更改的所有文件。使用--name-status
,您也可以获得状态符号,使用--diff-filter
可以指定要显示的文件集(例如,对于新添加的文件,为“A”)。如果需要,可以使用-M
打开移动检测并使用-C
进行复制检测。
为了最严格地阅读您所撰写的内容,git diff --cached --name-only --diff-filter=A
将列出自HEAD以来添加的所有文件,这些文件在HEAD中不存在。
答案 1 :(得分:39)
澄清:这是一种显示我打算要添加的文件的方法。这不是OP所期待的,但我会留下这篇文章,以防它对其他人有用。
这似乎只显示我添加 [到我的工作副本,而不是索引] 的文件,但是我的标准忽略模式不匹配:
$ git ls-files --others --exclude-standard
如果没有--exclude-standard
,它还会显示我运行git status
时忽略的文件。
答案 2 :(得分:1)
我想查看所有添加和修改的文件,所以合并
git diff --cached --name-only
+
git ls-files --modified --deleted
但两者之间没有[1]+ Stopped ...
。
使用git diff --cached --name-only && git ls-files --modified --deleted
时,我收到:
content/blog/2020/05/artificial-intellect.json
content/blog/2020/05/artificial-intellect.pug
[1]+ Stopped git diff --cached --name-only
content/index.json
index.php