Wiv*_*aro 21 git cherry-pick git-log git-cherry-pick
我一直在尝试使用
git log --no-merges --cherry-pick --right-only master...my-branch
Run Code Online (Sandbox Code Playgroud)
生成my-branch中但不在master中的提交列表(根据git-log文档).但是,列表中仍有许多等效的提交.如果我显示它们和它们的补丁,除了commit id之外没有区别.
git show 16cbd0e47406a4f7acbd6dc13f02d74d0b6a7621 >patcha
git show c53c7c32dcd84bfa7096a50b27738458e84536d5 >patchb
diff patcha patchb
1c1
< commit 16cbd0e47406a4f7acbd6dc13f02d74d0b6a7621
---
> commit c53c7c32dcd84bfa7096a50b27738458e84536d5
Run Code Online (Sandbox Code Playgroud)
甚至将git patch-id它们视为等效:
git show c53c7c32dcd84bfa7096a50b27738458e84536d5 | git patch-id
2b5504fb9a8622b4326195d88c7a20f29701e62b c53c7c32dcd84bfa7096a50b27738458e84536d5
git show 16cbd0e47406a4f7acbd6dc13f02d74d0b6a7621 | git patch-id
2b5504fb9a8622b4326195d88c7a20f29701e62b 16cbd0e47406a4f7acbd6dc13f02d74d0b6a7621
Run Code Online (Sandbox Code Playgroud)
怎么不git log --cherry-pick把这些作为重复?
你做樱桃选择后,你有没有将master合并到你的分支中? --cherry-pick首先通过匹配提交ID,然后如果失败,查找修补程序ID.如果你已经将master合并到你的分支中,那么你现在可以在你的分支上获得实际的提交以及挑选出来的版本.所以它会找到提交ID,然后继续报告樱桃挑选的版本.
我经常想知道git是否应该总是检查两者,但这可能是一个相当大的性能影响.