当我输入以下内容时,有没有办法获取将提交的文件列表?
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
答案 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] *//'
。