git apply:忽略非首尾空格

5
我希望将一个提交分为两个提交:内容变更和空格变更,不过我找到的每个解决方案都只适用于仅包含空格更改的行。以下是示例代码,其中包含无关的空格更改和对函数添加的新参数:
$ 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个回答

3

我认为最好的选择是在应用更改/提交之前重新格式化代码/重新格式化更改后的代码/提交并接受它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接