gpt4 book ai didi

git - git diff-files --diff-filters=A 有什么作用?

转载 作者:太空狗 更新时间:2023-10-29 14:42:48 25 4
gpt4 key购买 nike

git-diff-files(1) 的文档说

Select only files that are Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R), have their type (i.e. regular file, symlink, submodule, …) changed (T), are Unmerged (U), are Unknown (X), or have had their pairing Broken (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-indexdiff-treeformat-patchlog显示)。它们各自的文档仅包含 diff-options 文档:

include::diff-options.txt[]

见于 this line of the git-diff-files documentation source例如。公共(public) diff-options 然后具有共享的 --diff-filter 文本 starting here .

由于这些文件是在构建文档时处理的,如条件所示

ifndef::git-format-patch[]

--diff-filter 文档上方的行中,可以想象 diff-files 命令的文本会有所不同(或扩充以说明一些事实参数不适用)。针对此更改向 git 项目提交错误报告可能是有意义的。

关于git - git diff-files --diff-filters=A 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48039277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com