git diff --name-only with ignore space seems to be broken(忽略空格)。

问题描述 投票:2回答:1

我有一个版本库,其中有许多文件只有EOL空白的变化,但有些文件有实际的变化。 我试图制作一个别名,以便在vim标签中只打开有实际变化的文件的差异,作为其中的一部分,我正在运行一个叫做 git diff --name-only ... 命令来获取已更改的文件列表,以便我可以在标签页中打开它们。

我的问题是 --ignore-space-at-eol, --ignore-space-change--ignore-all-space 搭配 --name-only.

当我运行下面的命令时,什么也没有打印出来 (my_file 有一个CRLF变化)。)

git diff --ignore-space-at-eol my_file

但当我运行这个时,我得到 my_file 打印出来。

git diff --ignore-space-at-eol --name-only my_file

有没有什么方法可以只得到没有空格变化的文件名? 这在我看来是个bug,但我一直没找到类似的问题。

我使用的是git 2.25.0版本。

git diff space ignore
1个回答
1
投票

你将需要。

  • 首先获取文件列表 git diff -–name-only
  • 然后对每个文件进行 git diff --ignore-space-at-eol my_file

但如果你想在有实际变化的情况下才执行第二次差异,则用测试(在此),使用 --quiet 选择权:

if ! git diff --quiet --ignore-space-at-eol my_file; then
    git diff --ignore-space-at-eol my_file
fi
© www.soinside.com 2019 - 2024. All rights reserved.