中文

分析与评估 Git Diff 与 Merge 的行为

软件工程 2025-07-31 v1

摘要

尽管 Git 已被广泛使用,但使其实现协作的算法并不被很好地理解。尤其是 diff 和 merge算法,因其可被应用于其他情境而具有独特的兴趣。在本论文中,我记录了 Git 的主要功能:diff 的计算方式、其用于运行 merge 的方式,以及 merge 如何使更复杂的操作成为可能。在此过程中,我展示了 Git 中多个意外行为,包括以下几点:直方图 diff 算法在某些病例下,单行变更可导致文件其余部分被标记为已更改。默认的 merge 策略(ort)可能导致合并所需时间呈指数增长,增长量与历史中提交数量成正比。合并与变基操作不可交换,即使合并不导致冲突,结果也不可确定,取决于所使用的 diff 算法。最后,有时当两个合并方在相同位置添加不同行时,结果并非冲突,而是包含两个更改的合并,这两个更改在任意顺序下依次排列。

关键词

引用

@article{arxiv.2507.22071,
  title  = {Analyzing and Evaluating the Behavior of Git Diff and Merge},
  author = {Niels Glodny},
  journal= {arXiv preprint arXiv:2507.22071},
  year   = {2025}
}

备注

Bachelor's thesis