我希望将一个提交分为两个提交:内容变更和空格变更,不过我找到的每个解决方案都只适用于仅包含空格更改的行。以下是示例代码,其中包含无关的空格更改和对函数添加的新参数:
我找到的最好的是这个:
$ 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将快乐地忽略所有空格更改。
我相信存在其他工具可以做到我想要的事情(或接近它),尽管在这种情况下,我不能随便下载任何东西来解决问题。尽管如此,请随时发布那些可能有助于未来他人的答案。