我需要一个命令,可以给我所有修改过的文件 - 这包括已暂存(即新添加的文件)和未暂存的更改 - 以简单列表的形式提供,这样我就可以在脚本中使用它。虽然这个问题可能听起来很熟悉,但我只能找到接近我想要做的命令:
git ls-files -m
..列出(未暂存)的修改,但忽略已暂存和新添加的文件
git diff --name-only
..也仅列出未暂存的修改
git diff --name-only --cached
... 列出 只是已暂存的 修改,但省略了具有未暂存修改的文件。
git status --porcelain --untracked-files=no
.. 输出我想要看的所有文件,但是添加了状态
当然我可以使用 git status
然后使用 cut
命令的第一个条目,但由于我想将此命令集成到将在Windows上使用的CMake脚本中,因此一个单一的命令就足够了。
git diff
命令(就是你已经找到的那两个)。git status
命令在内部运行了两个git diff
。请注意,文件foo
可能会被修改并暂存,然后再次修改但未暂存。(这种情况下,git status
将其显示为MM
。) - torekHEAD
进行差异比较 - 这种方法有问题吗? - fransgit diff HEAD
比较HEAD
(当前提交)与工作树:它会忽略已经暂存,然后修改回匹配HEAD
提交的文件。例如,在foo
中添加一行,git add
结果,然后删除添加的行。 - torek