【发布时间】:2021-02-08 19:51:13
【问题描述】:
我已经修改了一个文件(碰巧在 Ruby 中,但我的问题实际上是关于 Git),方法是将一个方法移到文件上。这是一个伪差异:
class A
# some stuff
+ def b
+ end
+
private
def a
end
-
- def b
- end
end
然而,git 坚持将这一变化定义为:
class A
# some stuff
- private
-
- def a
- end
-
def b
end
+
+ private
+
+ def a
+ end
end
即。它认为private 关键字和方法a 已移动。
这在描述文件如何更改方面同样正确,但它几乎没有传达更改的意图。甚至可能有点令人困惑:更改的结果是使方法 b 成为公共方法,但这种差异使它看起来好像是方法 a 已更改。
我认为 Git 选择了这个差异,因为方法 a 比方法 b 略短,所以最终产生的差异略小。但是,为了使我的提交更易于理解,如果 diff 看起来更像这里的第一个示例,则更可取的是,以明确相关更改是对方法 b。
我的问题是:有没有什么方法可以手动编辑 Git 在我进行此更改时选择的块,以便我可以创建一个提交,其差异看起来像第一个示例而不是第二个示例?
【问题讨论】:
-
这是命令行差异的限制。在这种情况下,使用 GUI 差异工具是更好的选择。