这是我最近在Git中提交/更改的结果......
......在Gerrit:
是否有任何关于添加和删除的行数差异的解释?不同的算法?
答案 0 :(得分:1)
实际变化相同。但不同之处在于GIT和GERRIT如何计算更改的行数。假设您在HEAD之上有4个版本/更改/补丁集。
commit_patchset#4
commit_patchset#3
commit_patchset#2
commit_patchset#1
HEAD
<强> GIT中:强>
提交#4(A1)更改的行数:commit_patchset#4和commit_patch#3之间的差异
提交#3(B1)更改的行数:commit_patchset#3和commit_patch#2之间的差异
提交#2(C1)更改的行数:commit_patchset#2和commit_patch#1之间的差异
提交#1(D1)更改的行数:commit_patchset#1和HEAD
<强>格里特:强>
提交#4(A2)更改的行数:commit_patchset#4和BASE / HEAD之间的差异
提交#3(B2)更改的行数:commit_patchset#3和BASE / HEAD之间的差异
提交#2(C2)更改的行数:commit_patchset#2和BASE / HEAD之间的差异
提交#1(D2)更改的行数:commit_patchset#1和BASE / HEAD之间的差异
所以总是改变的行数会有所不同。
你可以要求Gerrit使用&#34; ..&#34; 选项显示补丁集版本而不是BASE / HEAD之间的确切差异(如GIT所示)。
例如,
http://your_gerrit_url/your_change_id/4..3 为您提供commit_patchset#4和commit_patchset#3之间更改的确切行。这应与GIT计算相匹配。
希望它有所帮助。
答案 1 :(得分:0)
如果您已多次推送,那么因为您的参考版本与更改中的基本提交不同。
答案 2 :(得分:0)
每个git都会指向一个完整的git树快照(这使得任何修订的检查或差异非常快且非常恒定)。 Git不会在内部存储补丁,它们会在需要时按需计算,例如计算提交统计数据时。
git diff
是计算它们的主要命令,它处理几种diff算法(至少参见--diff-algorithm
)。此外,git configuration可以设置特定的默认差异行为(请参阅diff.dirstat
和diff.algorithm
配置)。
如果两个工具/机器都使用不同的差异设置计算差异统计数据,那么最后可能会得到不同的统计数据。 (我不知道是不是这样)