如何撤销GitLab中单个早期的cherry-pick提交?
无需重新执行所有cherry-pick,直接单独撤销问题提交即可
不用重新做全部10个cherry-pick操作,你可以直接在当前release分支上处理那个有问题的commit,同时保留前后的提交内容,推荐两种安全高效的方案:
方案1:使用git revert(推荐,适合已推送到远程的分支)
这是最安全的方式,不会修改现有提交历史,而是生成一个新的提交来抵消问题commit的变更:
- 先通过
git log找到问题commit的哈希值(比如abc123) - 执行命令:
git revert abc123 - 编辑器会打开让你填写新commit的说明,保存退出即可
- 最后将这个新的revert提交推送到远程分支,完成修复
方案2:使用git reset(仅适用于分支未推送到远程的场景)
如果你的release分支还没推送到远程仓库,可以用重置的方式回退到问题commit之前,再重新cherry-pick后续提交:
- 找到问题commit的上一个提交哈希(比如问题commit是
abc123,其父提交是def456) - 执行命令:
git reset --hard def456,此时分支会回退到问题提交之前的状态 - 重新cherry-pick问题commit之后的那些提交(不用重新做全部10个,只需要补后面的几个)
注意事项
- 绝对不要在已经推送到远程的分支上使用
git reset --hard,会导致团队协作的历史冲突 - 优先选择
git revert,它对协作分支更友好,不会破坏已有的提交记录
内容的提问来源于stack exchange,提问作者ShieldOfSalvation
相关产品推荐
相关产品推荐

