git如何在文件中生成差异?

时间:2019-01-09 14:14:16

标签: git

diff处理文件时git遵循什么机制? git如何告诉我两个文件之间的区别(两次提交等)? 它是否遵循任何以行号为键,值为哈希值的键值对机制,并且如果哈希值发生变化,则该行会标记为已更改的行?

2 个答案:

答案 0 :(得分:3)

您最初提出的关于 binary 文件的问题,在Git中,这意味着“ Git决定的文件不是文本”。对于此类文件,除非您提供特殊的差异驱动程序,否则Git不会尝试生成差异,它只会说“这两个文件相同”或“这两个文件不同”。 (差异驱动程序是一个外部程序:您可以指示Git代替运行该程序,并且该程序可以执行 it 对这对文件的任何操作,以生成可用的差异。)< / p>

您更新的问题(至少在此时为止)询问有关差异 text 文件的问题。 Git内置了LibXDiff的修改版本。 The main algorithm here is due to Eugene Myers。另请参见Myers diff algorithm vs Hunt–McIlroy algorithm。有关diff算法的更加用户友好的介绍,请参见my stalled book第3章的最后一部分。实际上,您对行哈希的想法有所了解:这些diff算法比较符号,并且使用行哈希作为diff矩阵中的符号是它们查找逐行diff的方式。

答案 1 :(得分:2)

可能会生成文件的校验和并进行比较,如果它们不同,则文件将被标记为已修改,但是不会告诉您差异,因为它根本不知道