仅选择已添加(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
选项表明它能够选择添加的文件。
答案 0 :(得分:3)
确实git diff-files
永远不会显示添加的文件。
diff-files
命令显示索引与工作副本中的文件之间的差异。根据定义,尚未添加到索引的文件(通过git add
)将不会成为索引的一部分,因此不会显示在索引和工作副本之间的任何差异中。只需将文件添加到索引中,就会使索引和工作副本中的文件相同,因此索引和工作副本之间没有任何区别,因此也不会显示在diff-files
中。修改工作副本中添加的文件将直接导致M
状态。
文档显示所有可能的--diff-filter
参数的原因是diff选项文档在所有采用diff选项的命令之间共享(diff-files
,diff-index
,{ {1}},diff-tree
,format-patch
和log
)。他们各自的文档只包含show
文档:
diff-options
例如,见this line of the git-diff-files documentation source。然后,公共include::diff-options.txt[]
具有共享的diff-options
文字starting here。
由于在构建文档时会处理这些文件,如条件
所示--diff-filter
在ifndef::git-format-patch[]
文档上方的行中,可以想象可以为--diff-filter
命令改变文本(或者扩充以说明某些参数不适用的事实)。向git项目打开错误报告以进行此更改可能有意义。