如何仅列出要提交的文件?

时间:2009-11-29 03:00:52

标签: git file commit status

当我输入以下内容时,有没有办法获取将提交的文件列表?

git commit -m "my changes"

git status列出太多。我可以删除所有的单词,但我宁愿不。而且我不想被告知未跟踪的文件。

我试过

git ls-files -md

但是这不会显示最近添加但尚未提交的文件。

我正在寻找你从

获得的相同输出
svn status -q

例如 $ svn status -q
一个file.py
M dir / database.py
M start.py

4 个答案:

答案 0 :(得分:30)

这就是我要找的东西。感谢notnoop领导我需要的。我想回复我的解决方案,以防其他人帮忙。

git diff HEAD  --name-only

因为我打算做

git commit -s -F mesage.txt

在第一行找到文件。

我的目的是创建一个完全忽略索引的小系统,即我永远不需要做git add。 (据我所知,索引在创建补丁时非常有用,这在我的工作流程中绝不是常态。)

答案 1 :(得分:9)

此命令将告诉您索引/缓存/暂存区域中的哪些文件与当前HEAD(以及它们是添加,修改还是删除)不同,这些更改将在您使用git commit时提交没有显式路径或-a选项。它的格式与您显示的svn status输出相似。

git diff --cached --name-status

答案 2 :(得分:5)

您可以尝试:

git diff --name-status

我得到以下内容:

$ git diff --name-status
M       README.markdown

没有未跟踪的文件。

答案 3 :(得分:3)

我知道OP原来要求避免git status,但我觉得离开后代(即其他不同意OP预订的人)会很高兴。

git status --porcelain | grep -v '^[ |??]' | sed -e 's/[A-Z] *//'

我的理由是git status --porcelain似乎是为了这种类型的窘境而构建的......

来源:http://git-scm.com/docs/git-status.html

编辑: 如果您希望将git的修改标记保留在每个文件名前面,您可以选择不使用sed -e 's/[A-Z] *//'