仅选择已添加(A),复制(C),删除(D),修改(M),重命名(R)的文件,其类型(即常规文件,符号链接,子模块,...)已更改(T), Unmerged(U),Unknown(X),或者他们的配对破碎(B)......
但是,以下命令不显示添加的文件(不要在带有origin
子目录的目录中运行它):
start=$PWD
origin="$start/origin"
rm -rf $origin
mkdir $origin
cd $origin
touch 1.txt
echo "2" > 2.txt
git init
git add -A
git commit -m "init"
echo "1" > 1.txt
rm 2.txt
echo "3" > 3.txt
git diff-files --diff-filter=ADM
输出如下:
$ git diff-files --diff-filter=ADM
:100644 100644 e69de... 0000... M 1.txt
:100644 000000 0cfbf... 0000... D 2.txt
git diff-files
从未显示添加的文件吗? diff-filter
选项表明它能够选择添加的文件。
确实git diff-files
永远不会显示添加的文件。
diff-files
命令显示索引与工作副本中的文件之间的差异。根据定义,尚未添加到索引的文件(通过git add
)将不会成为索引的一部分,因此不会显示在索引和工作副本之间的任何差异中。只是将文件添加到索引将使索引和工作副本中的文件相同,因此索引和工作副本之间没有任何区别,因此也不会显示在diff-files
中。修改工作副本中添加的文件将直接导致M
状态。
文档显示所有可能的--diff-filter
参数的原因是diff选项文档在所有采用diff选项的命令之间共享(diff-files
,diff-index
,diff-tree
,format-patch
,log
和show
)。他们各自的文档只包括diff-options
文档:
include::diff-options.txt[]
例如在this line of the git-diff-files documentation source中看到过。共同的diff-options
然后有共享的--diff-filter
文本starting here。
因为在构建文档时会处理这些文件,如条件所示
ifndef::git-format-patch[]
在--diff-filter
文档上方的行中,可以想象可以为diff-files
命令改变文本(或者增加以说明某些参数不适用的事实)。向git项目打开错误报告以进行此更改可能有意义。