38

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

git commit -m "my changes"

git status 列出太多。我可以去掉所有的词,但我宁愿不这样做。而且我不想被告知未跟踪的文件。

我试过了

git ls-files -md

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

我正在寻找与您相同的输出

svn status -q

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

4

4 回答 4

47

这就是我一直在寻找的。感谢 notnoop 提供了我需要的线索。我想发回我的解决方案,以防它帮助其他人。

git diff HEAD  --name-only

因为我打算做

git commit -s -F mesage.txt

与第一行中找到的文件。

我的意图是创建一个完全忽略索引的小系统,即我永远不需要执行 git add。(据我了解,索引在创建补丁时很有用,这绝不是我工作流程中的规范。)

于 2009-11-29T03:45:54.087 回答
12

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

git diff --cached --name-status
于 2009-11-29T21:58:54.713 回答
6

我知道 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

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

于 2014-01-04T19:06:44.597 回答
6

你可以试试:

git diff --name-status

我得到以下信息:

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

没有未跟踪的文件。

于 2009-11-29T03:05:28.967 回答