gpt4 book ai didi

git - 在提交之间使用 git-diff 忽略 *所有* 空白更改

转载 作者:IT王子 更新时间:2023-10-29 00:39:22 25 4
gpt4 key购买 nike

我正在检查代码库并修复空白问题并通常更正缩进和类似的东西,我想确保我没有无意中做出任何其他更改,所以我正在做 git diff -w 显示所有更改文件的差异,同时忽略空白差异。问题是这实际上并没有忽略所有 空白差异——至少 认为仅仅是空白差异。例如,在 git diff -w 的以下输出中,

-"Links":
-{
-
- "Thermal":
-
-{
-
+ "Links": {
+ "Thermal": {

你可以看到我只有

  1. 删除了多余的空行,
  2. 将大括号放在其值打开的键的行的末尾,并且
  3. 缩进以适应上下文

This question一开始看起来它可能会提供答案,但它处理的是两个特定文件 之间的差异,而不是两个特定提交 之间的差异。通过搜索出现的其他所有内容也都是死胡同。例如,this question关于 merge ,不显示差异,this question处理显示词级差异等。

最佳答案

也许有更好的答案,但到目前为止我找到的最好的解决方案是这个。

首先,您必须控制 Git 当前使用的“空白”的定义。

git config core.whitespace '-trailing-space,-indent-with-non-tab,-tab-in-indent'

接下来,您必须控制所用词的定义。除了使用 git diff -w,添加 --word-diff-regex='[^[:space:]]':

git diff -w --word-diff-regex='[^[:space:]]'

您仍然会看到上下文,这(在我的例子中,因为我试图确保没有差异除了空白差异)没有帮助。您可以使用 -U0 告诉 Git 给您 0 行上下文,就像这样,

git diff -w -U0 --word-diff-regex='[^[:space:]]'

但是您仍然会得到看起来非常像上下文的输出,但这仍然比仔细和手动查看所有更改以确保它们只是空白更改要好得多。

您也可以在一个命令中完成上述所有操作。 -c 标志仅针对一个命令更改 git 配置。

git -c core.whitespace=-trailing-space,-indent-with-non-tab,-tab-in-indent diff -U0 --word-diff-regex='[^[:space:]]'

关于git - 在提交之间使用 git-diff 忽略 *所有* 空白更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33159394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com