git - 带有忽略空间的 git diff --name-only 似乎已损坏
问题描述
我有一个存储库,其中有许多文件只有 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
解决方案
我最近碰巧偶然发现了一个类似的问题,并且还发现使用该--name-only
选项不适用于--ignore-all-space
or --ignore-blank-lines
。
正如评论中的某人指出的那样,这是由于--name-only
仅检查文件是否已更改而不计算实际更改。我发现您可以改用该--stat
选项,因为这将计算文件的实际更改。
因此,要在忽略空格更改的同时获取已更改的文件列表,您可以使用以下内容:
git diff --stat --ignore-all-space --ignore-blank-lines --diff-filter=M <branchname>
推荐阅读
- .net - 从 CefSharp 中的 iframe 返回 .net 调用被阻止
- mongodb - 如何访问 MongoDB 数据?
- python - 根据当前时间更改变量
- python - 根据另一个系列中字符串中的值的计数,将布尔值分配给熊猫数据框中的空白系列/
- gradle - project.getProperty() 如何在 Gradle 中工作?
- python - 为什么我的 Python 代码仅适用于特定输入?
- c - Parallelize Game of Life Openmp:不适用于大型矩阵
- c - 无法将 char 数组(文件名)传递给 fopen(file,r)
- amazon-web-services - 为什么在未指定配置文件时,具有特定用户的 AWS Bucket Policy NotPrincipal 不适用于 aws 客户端?
- android - VideoView 无法从 InputStream 播放视频