在 Git 中将仅名称与其他参数一起使用
Using name-only with other parameters in Git
我最近对一个包含 90% 空白更改的分支进行了一些更改。现在我想计算一下有多少文件收到了另外 10% 的更改。有没有办法在 git diff
的同时传递其他参数,例如 --ignore-blank-lines
? git diff --name-only --ignore-blank-lines
returns 所有更改文件的完整列表,而不是筛选列表。如果我省略 --name-only
那么 diff 会显示我想要的确切更改,但我想要的只是文件的 list,我不关心更改本身。
谢谢!
不幸的是,--name-only
和 --name-status
使用快捷方式:他们比较存储的 树 (名称和哈希 ID)而不查看 文件内容.1
您需要做的是将 git diff
(或 git show
)与空白选项一起使用,然后去掉除文件名以外的所有内容。例如:
$ git show | grep '^diff '
diff --git a/file1 b/file1
diff --git a/file2 b/file2
$ git show --ignore-blank-lines | grep '^diff '
diff --git a/file2 b/file2
多一点按摩(and/or 使用 --no-prefix
)将为您提供没有 a/
和 b/
前缀的文件名:
$ git show --ignore-blank-lines --no-prefix | grep '^diff '
diff --git file2 file2
1如果启用重命名检测,检测器会检查每个文件的内容。但是,它不使用空格选项,所以这根本不会影响结果。 --name-status
算法的其余部分继续只使用存储的散列。
我最近对一个包含 90% 空白更改的分支进行了一些更改。现在我想计算一下有多少文件收到了另外 10% 的更改。有没有办法在 git diff
的同时传递其他参数,例如 --ignore-blank-lines
? git diff --name-only --ignore-blank-lines
returns 所有更改文件的完整列表,而不是筛选列表。如果我省略 --name-only
那么 diff 会显示我想要的确切更改,但我想要的只是文件的 list,我不关心更改本身。
谢谢!
不幸的是,--name-only
和 --name-status
使用快捷方式:他们比较存储的 树 (名称和哈希 ID)而不查看 文件内容.1
您需要做的是将 git diff
(或 git show
)与空白选项一起使用,然后去掉除文件名以外的所有内容。例如:
$ git show | grep '^diff '
diff --git a/file1 b/file1
diff --git a/file2 b/file2
$ git show --ignore-blank-lines | grep '^diff '
diff --git a/file2 b/file2
多一点按摩(and/or 使用 --no-prefix
)将为您提供没有 a/
和 b/
前缀的文件名:
$ git show --ignore-blank-lines --no-prefix | grep '^diff '
diff --git file2 file2
1如果启用重命名检测,检测器会检查每个文件的内容。但是,它不使用空格选项,所以这根本不会影响结果。 --name-status
算法的其余部分继续只使用存储的散列。