git apply:忽略非前导/尾随空格

时间:2018-07-31 03:02:39

标签: git whitespace

我想将提交分为两个提交:有内容的更改和空格更改,尽管我发现的每个解决方案仅在一行仅包含空格更改时才适用。

以下是不相关的空格更改,并且向函数添加了新参数:

$ git diff -U0
diff --git a/blah.h b/blah.h
--- a/blah.h
+++ b/blah.h
@@ -1, +1 @@
-void  blah();
+void blah(int x);

我发现的最好的是:

$ git diff -w --word-diff-regex=[^[:space:]]
diff --git a/blah.h b/blah.h
--- a/blah.h
+++ b/blah.h
@@ -1, +1 @@
void blah({+int x+});

...但是据我所知git-apply不能将其用作输入。

我几乎使自己确信这不可能,因为git需要上下文信息来知道这是否是有意义的更改,例如:

  • 在文字字符串内(尤其是如果它跨越多行)
  • 空格是否有意义(例如,makefile)

...但是只要您不引入任何其他更改(在相关行的某个邻域中),git就会愉快地忽略所有空格更改。

我确定还有其他工具可以执行我想要的事情(或接近它的事情),尽管在这种情况下,我不能只下载想要解决问题的任何东西。不过,请随时发布有关该条的答案,因为它们将来可能会帮助其他人。

1 个答案:

答案 0 :(得分:3)

我相信我最好的选择是在应用更改/提交/重新格式化更改的代码/提交并使用它之前重新格式化代码。