我有几个git分支,它们之间进行了提交挑选。有时会合并提交。
为了决定是否将提交
如果
为了决定是否将提交
abcdef
应用于live
分支,我想知道是否已经将等效的提交应用于preprod
分支。如果
preprod
从未压缩提交,则我将使用补丁ID,如此问题中所讨论的那样。由于preprod
可能会压缩提交序列,因此我想查看abcdef
在preprod
上是否为空提交。$ git checkout preprod
$ git cherry-pick abcdef
On branch preprod
Your branch is up-to-date with 'origin/preprod'.
You are currently cherry-picking commit abcdef.
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
Otherwise, please use 'git reset'
如何通过程序检测挑选提交是否会导致一个空提交?
(我知道这是一个不完美的启发式方法来检测修补程序是否已应用,但对于我的使用情况而言足够好。)
git diff
并检查结果,而不是完整地执行 cherry-pick 操作。如果git diff
显示没有差异,则应该可以继续。 https://dev59.com/zmYr5IYBdhLWcg3wYpQg#13715727。不幸的是,压缩生产分支会改变历史记录,因此你已经清除了确定是否应用了补丁的最佳方法。我强烈建议将来不要这样做。这种做法基本上使得代码版本控制工具失去了意义。 - JDB