如何防止git重新生成diff?

时间:2017-12-11 21:56:54

标签: git

(我不确定标题,有人请帮助将其编辑为更合适的标题。)

Git自动生成最小差异,这对存储有好处,但我真的不介意浪费一两行来提高可读性。

使用我的编码风格,git自动生成的差异通常会将具有相同缩进的不同块的右括号视为未更改。例如:

-if (true) {
-   // Do something
+foreach (int i in array) {
+   // Do something else
 }

当周围有更多修改时,这可能导致难以读取差异。我希望它看起来像这样:

-if (true) {
-   // Do something
-}
+foreach (int i in array) {
+   // Do something else
+}

基本上删除旧行,然后添加新行,如果两行之间有“未更改”的行(空行,右括号和其他常见行,如} else {),只需删除它们并将它们添加到新行中相应

所以我尝试使用git add file --patch并手动将其更改为我的愿望,但在关闭编辑器后,git将我的更改恢复为原始的最小差异(不改变右括号)

是否有可能在不创建两个单独的提交的情况下实现我想要的目标?

1 个答案:

答案 0 :(得分:0)

我不认为这是可能的,因为包含闭合括号的线条没有区别。您的差异需要能够理解您的代码才能知道由于开放块不同,因此闭包块也应该包含在块中。 可能是一个可以做到这一点的差异工具,如果你能找到它,你可以让git diff将它用作git diff --ext-diff的外部差异助手。 The Git Book has examples of changing the behavior of git diff using git attributes

您可以使用视觉差异工具并且并排查看更改,从而获得所需的清晰度。您可以使用git difftool执行此操作,它将启动外部差异查看器。例如,使用Meld,您的更改就是这样。 Meld非常原始,但还有许多其他工具,git difftool知道如何安装它们之后如何使用它们。

enter image description here

许多代码编辑器和IDE都有自己内置的可视化差异工具,可以提供相同的清晰度。这是split-diff packageAtom editor

enter image description here