如何用Git验证被撤销后重提交的提交与原提交完全一致?
如何验证Git提交fff与bbb内容完全一致(Windows环境无额外工具)
场景说明
现有提交历史如下:
1. aaa original code 2. bbb the change 3. ccc unrelated change 1 4. ddd reversed bbb for some reason 5. eee unrelated change 2
代码作者提交了包含变更fff的PR,声称该PR仅撤销提交ddd,完全恢复bbb的内容。需要验证bbb与fff的提交内容完全一致,且要求在Windows环境下操作,无需diff、sed、awk等第三方工具。
验证方法(Git原生命令)
Git中,若两个提交的文件内容完全一致,它们对应的树对象(tree)哈希值会完全相同。以下是无需额外工具的验证命令:
1. 直接对比提交的树对象哈希
分别执行以下命令获取两个提交的树哈希:
git show --format="%T" bbb git show --format="%T" fff
- 说明:
%T参数指定仅输出提交对应的树对象哈希值,若两个输出的哈希完全一致,说明bbb和fff的文件内容100%相同。
2. 用rev-parse直接获取树哈希
也可以用更简洁的命令直接提取树哈希:
git rev-parse bbb^{tree} git rev-parse fff^{tree}
- 说明:
^{tree}是Git的特殊语法,用于直接定位到提交对应的树对象,输出结果和上一种方法完全一致,对比哈希值即可验证内容一致性。
3. 辅助验证fff是否确实是ddd的撤销(可选)
如果需要进一步确认fff仅撤销了ddd,可以查看提交链:
git log --oneline --graph bbb..fff
该命令会展示从bbb到fff的提交路径,确认中间只有ddd和fff两个提交。此外,还可以用Git自带的diff工具对比ddd和fff:
git diff ddd fff
Windows下Git自带的diff无需额外工具,若输出的diff正好是ddd的反向变更(即与bbb相对于aaa的diff一致),则说明fff确实完全恢复了bbb的内容。
内容的提问来源于stack exchange,提问作者Inquisitor
相关产品推荐
相关产品推荐

