首页 > 解决方案 > git diff 如何判断一行是否已被修改或添加?

问题描述

给定两个文件 git diff 或任何 diff 工具如何判断哪些行已添加、修改或删除?

是否存在无法识别已编辑行的正确状态的边缘情况?

编辑:这个问题更关心差异如何发生的实际方法

标签: gitalgorithmdiff

解决方案


Git 存储快照:给定您选择的任意两个快照,Git 提取您想要比较的文件1到临时区域2,然后在这两个文件上运行“差异引擎”。这个引擎的结果是或者应该是一系列指令,当应用这些指令时,会将左侧文件转换为右侧文件。

Git 有几个内置的差异引擎,Git 称之为:

它还可以运行您选择的外部差异引擎。


1或者至少是它想要比较的那些。如果您正在比较实际上不在提交中的文件,它们可能已经被提取。

2 Git 主要在内存中执行此操作,但在运行外部差异时,确实使用临时文件。


推荐阅读