git 应用 : Ignore non-leading/trailing whitespace

标签 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 会很乐意忽略所有空白更改。

我确信还有其他工具能够完成我想要的(或接近它的东西),但在这种情况下,我不能只下载我想要的任何东西来解决问题。尽管如此,请随时发布该类型的答案,因为它们可能会在将来帮助其他人。

最佳答案

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

关于git 应用 : Ignore non-leading/trailing whitespace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51604885/

相关文章:

git - SourceTree merge 忽略空格冲突

c++ - isspace() 仅适用于最多 8 位数字?

git - 如何使用 Git 查看文件在哪些提交中被重命名?

git - 在 Git 中,我可以查看分支 merge 中的所有提交吗?

git push错误 "error: src refspec xxx does not match any."使用git flow

r - 在图周围裁剪出ggplot2空白

html - CSS/HTML : a tag with a span inside, 跨边距在悬停下划线上创建空白

java - 使用 printf 混合多种格式

c# - 如何阻止 git 在 checkout 时破坏编码

git - IntelliJ 中的更改 View 继续列出文件,其中唯一的区别是 LF 与 CRLF