Git cherry-pick操作:如何在实际执行前预览将要应用的变更
当然有可行的方法!完全不需要实际执行git cherry-pick或者对仓库做任何修改,就能提前获取到类似git diff格式的变更列表,下面是两种最常用的方式:
单个提交的变更查看
如果你只想cherry-pick某一个特定的提交,直接用git show <commit-hash>命令就行。它会输出该提交的完整diff内容——包括哪些文件被修改、具体哪几行做了变更,格式和git diff完全一致。这个命令本质是查看该提交本身的变更记录,只要当前分支和该提交的原分支没有复杂的冲突,这就是cherry-pick会应用到你当前分支的内容。
结合当前分支状态的差异对比
如果你想更精准地看到目标提交相对于当前分支的变更(毕竟cherry-pick是把提交的变更应用到当前分支),用git diff HEAD <commit-hash>就最合适了。这个命令会对比你当前所在分支的最新提交(HEAD)和目标提交之间的差异,结果就是cherry-pick操作会引入的所有变更。
要是你需要cherry-pick多个连续的提交,比如从提交A到提交B(包含B),可以把命令改成git diff HEAD A^..B,这样就能一次性查看这一系列提交的总变更内容。
额外提示
如果你还想提前检查cherry-pick是否会产生冲突,可以用git cherry-pick --dry-run <commit-hash>,不过这个命令只会告诉你操作是否能顺利执行,不会输出具体的diff内容。如果确实需要提前看冲突情况,建议临时创建一个分支来模拟操作,但这会涉及到仓库的临时修改,用完删除分支就行。
内容的提问来源于stack exchange,提问作者mikkom

