git diff --name-only with ignore space 似乎被破坏了
git diff --name-only with ignore space seems to be broken
我有一个存储库,其中有许多文件只有 EOL 空白更改,但有些文件有实际更改。我正在尝试制作一个别名以仅打开 vim 选项卡中具有实际更改的文件的差异,作为其中的一部分,我正在 运行 宁一个 git diff --name-only ...
命令以获取列表已更改的文件,以便我可以在选项卡中打开它们。
我的问题是 --ignore-space-at-eol
、--ignore-space-change
和 --ignore-all-space
与 --name-only
组合时似乎什么都不做。
当我运行下面的命令没有打印出来(my_file
有一个CR/LF变化):
git diff --ignore-space-at-eol my_file
但是当我 运行 我得到 my_file
打印出来:
git diff --ignore-space-at-eol --name-only my_file
有没有办法只获取没有空格更改的文件名?这对我来说似乎是一个错误,但我一直没能找到类似的问题。
我正在使用 git 版本 2.25.0
您将需要:
- 先获取文件列表:
git diff -–name-only
- 然后对每个文件执行
git diff --ignore-space-at-eol my_file
但是如果您只想在有实际更改时执行第二个差异,请用测试包装第二个差异 (as in here), using the --quiet
option:
if ! git diff --quiet --ignore-space-at-eol my_file; then
git diff --ignore-space-at-eol my_file
fi
我最近碰巧遇到了类似的问题,还发现使用 --name-only
选项对 --ignore-all-space
或 --ignore-blank-lines
都不起作用。
正如评论中有人指出的那样,这是由于 --name-only
仅检查文件是否已更改但未计算实际更改。我发现您可以改用 --stat
选项,因为这将计算对文件的实际更改。
因此,为了在忽略空白更改的同时获取已更改的文件列表,您可以使用如下内容:
git diff --stat --ignore-all-space --ignore-blank-lines --diff-filter=M <branchname>
我有一个存储库,其中有许多文件只有 EOL 空白更改,但有些文件有实际更改。我正在尝试制作一个别名以仅打开 vim 选项卡中具有实际更改的文件的差异,作为其中的一部分,我正在 运行 宁一个 git diff --name-only ...
命令以获取列表已更改的文件,以便我可以在选项卡中打开它们。
我的问题是 --ignore-space-at-eol
、--ignore-space-change
和 --ignore-all-space
与 --name-only
组合时似乎什么都不做。
当我运行下面的命令没有打印出来(my_file
有一个CR/LF变化):
git diff --ignore-space-at-eol my_file
但是当我 运行 我得到 my_file
打印出来:
git diff --ignore-space-at-eol --name-only my_file
有没有办法只获取没有空格更改的文件名?这对我来说似乎是一个错误,但我一直没能找到类似的问题。
我正在使用 git 版本 2.25.0
您将需要:
- 先获取文件列表:
git diff -–name-only
- 然后对每个文件执行
git diff --ignore-space-at-eol my_file
但是如果您只想在有实际更改时执行第二个差异,请用测试包装第二个差异 (as in here), using the --quiet
option:
if ! git diff --quiet --ignore-space-at-eol my_file; then
git diff --ignore-space-at-eol my_file
fi
我最近碰巧遇到了类似的问题,还发现使用 --name-only
选项对 --ignore-all-space
或 --ignore-blank-lines
都不起作用。
正如评论中有人指出的那样,这是由于 --name-only
仅检查文件是否已更改但未计算实际更改。我发现您可以改用 --stat
选项,因为这将计算对文件的实际更改。
因此,为了在忽略空白更改的同时获取已更改的文件列表,您可以使用如下内容:
git diff --stat --ignore-all-space --ignore-blank-lines --diff-filter=M <branchname>