Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git diff——仅包含忽略空格的名称似乎已损坏_Git_Diff_Space_Ignore - Fatal编程技术网

git diff——仅包含忽略空格的名称似乎已损坏

git diff——仅包含忽略空格的名称似乎已损坏,git,diff,space,ignore,Git,Diff,Space,Ignore,我有一个存储库,其中有许多文件只有EOL空白更改,但有些文件有实际更改。我正在尝试创建一个别名,以便在vim选项卡中仅打开具有实际更改的文件的差异,作为这一过程的一部分,我正在运行git diff--name only…命令,以获取已更改的文件列表,以便在选项卡中打开它们 我的问题是,--在下线忽略空格,--忽略空格更改,--忽略所有空格与--仅名称组合时似乎什么也做不了 当我运行以下命令时,不会打印任何内容(myu文件有CR/LF更改): 但当我运行此命令时,我会打印出我的\u文件: git

我有一个存储库,其中有许多文件只有EOL空白更改,但有些文件有实际更改。我正在尝试创建一个别名,以便在vim选项卡中仅打开具有实际更改的文件的差异,作为这一过程的一部分,我正在运行
git diff--name only…
命令,以获取已更改的文件列表,以便在选项卡中打开它们

我的问题是,
--在下线忽略空格
--忽略空格更改
--忽略所有空格
--仅名称
组合时似乎什么也做不了

当我运行以下命令时,不会打印任何内容(
myu文件
有CR/LF更改):

但当我运行此命令时,我会打印出
我的\u文件

git diff --ignore-space-at-eol --name-only my_file
有没有办法只获取没有空格更改的文件名?这对我来说似乎是一个bug,但我还没有找到类似的问题

我使用的是git 2.25.0版

您需要:

  • 首先获取文件列表:
    git diff-–仅限名称
  • 然后对每个文件执行一个git diff--ignore eol my_文件的空格
但是,如果只想在有实际更改的情况下执行第二个差异,请使用测试()包装第二个差异,使用:


我最近碰巧遇到了一个类似的问题,并且还发现使用
--仅名称
选项既不能使用
--忽略所有空格
也不能使用
--忽略空行

正如评论中有人指出的那样,这是由于
--仅名称
仅检查文件是否已更改,而不计算实际更改。我发现您可以使用
--stat
选项,因为这将计算文件的实际更改

因此,要获取在忽略空白更改的情况下已更改的文件列表,可以使用以下方法:


git diff--stat--忽略所有空格--忽略空行--diff filter=M

git diff--name only
列出文件而不查看内容。您不能按文件内容筛选列表。@我知道它是这样做的,但对我来说,这违反了我的期望(尤其是因为它没有通知我那些其他标志对于
--仅名称
)无效)。我愿意接受关于替代方法的建议。你可以试着向Git项目人员报告这是一个bug。他们可能会忽略你,但如果他们有足够多的人对此抱怨——我知道Git为什么会在内部这么做,但我不认为Git应该这么做,但我个人不太关心自己修复它:-)-也许有人会真的修复它。@torek如果OP选择打开一个bug,那么最好使用Git 2.27:它附带,这是我在结尾提到的)谢谢你的回答,当使用git中的本机扩散功能时,这是有效的。我想我需要一个更复杂的脚本来收集数组中的名称,以便将它们传递给vim,但这是我自己的应用程序,有点超出了这个问题的范围。我相信——安静能让我做我需要的事情。@DrEsperanto太好了!尽管如此,我相信你提到的git diff——在eol忽略空格——只说出我的_文件是一个bug。与我的答案相比,这是一个有趣的解决方案。向上投票。
git diff --ignore-space-at-eol --name-only my_file
if ! git diff --quiet --ignore-space-at-eol my_file; then
    git diff --ignore-space-at-eol my_file
fi