我想将一个提交分成两个提交:内容更改和空白更改,尽管我发现的每个解决方案仅适用于一行仅包含空白更改的情况。
下面有一个不相关的空格更改和一个新的参数添加到函数中:
$ 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 会很乐意忽略所有空白更改。
我确信还有其他工具能够完成我想要的(或接近它的东西),但在这种情况下,我不能只下载我想要的任何东西来解决问题。尽管如此,请随时发布该类型的答案,因为它们可能会在将来帮助其他人。
最佳答案
我相信我最好的选择是在应用更改之前重新格式化代码/提交/重新格式化更改的代码/提交并接受它。
关于git 应用 : Ignore non-leading/trailing whitespace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51604885/