Git Merge:合并时提交的新旧顺序是否会影响结果?
Git合并提交A和B:提交顺序是否影响结果?
Git合并的核心逻辑是基于提交的内容差异与历史拓扑关系,和提交的时间戳新旧完全无关,具体分两种场景来看:
当A、B是从同一个父提交分叉出的独立提交(比如两个并行开发的分支):
不管A和B谁的时间更早,把B合并到A,或是把A合并到B,最终合并后的代码内容是完全一致的。唯一的区别是生成的合并提交的父顺序会反过来——合并B到A时,合并提交的父节点依次是A、B;合并A到B时则是B、A。但代码层面的合并结果没有差异,因为Git会计算两个提交相对于共同父节点的内容变更,再把这些变更整合到一起。当A是B的直接祖先(B基于A提交):
把B合并到A时,Git会执行快进合并(fast-forward),不会生成新的合并提交,只是将A所在分支的指针直接移动到B的位置,最终分支状态就是B的内容。反过来如果A是B的后代,把B合并到A时,Git会提示分支已经是最新状态,不会有任何变更。
简单说:Git合并只看提交的历史关系和内容差异,时间戳只是提交的元数据,完全不影响合并结果的计算。
内容的提问来源于stack exchange,提问作者Jagerber48
相关产品推荐
相关产品推荐

