gpt4 book ai didi

git - 我可以看看 2 个提交补丁是否相同

转载 作者:行者123 更新时间:2023-12-02 08:14:45 25 4
gpt4 key购买 nike

如果一个分支有提交 A-B-C 而另一个分支有提交 A-C'-B',有没有办法对 B 和 B' 的补丁进行哈希处理?我想(脚本 a)比较 2 个分支,并报告差异,所以在上面的例子中,我希望它注意到它们是相同的。如果我在 C 和 B' 之间使用日志,将显示 2 个提交,即使它们是另一个顺序中的相同提交。

经测试在 git show 之间做一些差异,但由于行号不同,我不知道如何让它们相等。

这是设置 git 测试用例的脚本:

git init
seq 1 50 > a
git add a
git commit -m "fill a"

git checkout -b top_bottom
sed -i '1 a\
Add this line high up in the file' a
git add a
git commit -m "top of a"
sed -i '$ a\
Add this line at the bottom of the file' a
git add a
git commit -m "bottom of a"
git checkout master

git checkout -b bottom_top
git cherry-pick top_bottom
git cherry-pick top_bottom~
git checkout master

diff <(git show --format=raw top_bottom) <(git show --format=raw bottom_top~1) 一样进行比较在补丁部分显示行号差异(以及标题中的预期哈希差异)

最佳答案

You want git patch-id ,正是为此目的而设计的。

我不得不为 FreeBSD sed 稍微修改您的设置脚本(将 sed -i '1a\ 更改为 sed -i -e '1a\) 但这样做了:

$ git show bottom_top | git patch-id --stable
3a28b42e4aae9c248c00c63451756cbd881cf046 2c33ad0a41076e5a47ec780e8ab6c6b8450db582
$ git show top_bottom~1 | git patch-id --stable
3a28b42e4aae9c248c00c63451756cbd881cf046 7cd871013b7bbfc69f03315d43285a2b78b81a86

第一个数字是补丁 ID(您可以使用 --stable--unstable;阅读文档来决定使用哪个),第二个是提交哈希。请注意,top_bottom 会生成不同的补丁 ID(当然,来自不同的提交):

$ git show top_bottom | git patch-id --stable
69febc37e58b8aeb210b3e1e71fa59a11c369a74 9a34efdfe098f6b690199a124cc3ce34f48002b8

关于git - 我可以看看 2 个提交补丁是否相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42921497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com