撤消由 git cherry-pick -n <hash> 失败引起的本地更改

Undo local changes caused by failed git cherry-pick -n <hash>

我正在尝试使用 "git cherry-pick -n hash" 从我的 dev 分支获取多个提交到我的 uat 分支,然后只使用一个 git commit/push 将它们发送到 uat。

假设我有 5 个我想要的提交,所以我结帐并拉出我的 uat 分支并开始从开发人员中挑选。前 4 次 cherry-picks 成功,但第 5 次因合并冲突而失败。我如何 return 到以前的状态(在第 4 个 "git cherry-pick -n 4th_hash" 之后?

"git reset --merge" 撤消所有更改(包括我想要的前 4 个)。 "git cherry-pick --abort" 表示没有正在进行的 cherry-pick。

有什么方法可以做到这一点吗?我正在尝试创建一个 bash 脚本来自动执行此操作。

我不确定如果您有冲突,您希望如何在脚本中自动执行此操作。但不管它。如果您想保存以前的状态,我建议您删除 -n 标志。 所以执行:

git cherry-pick <hash>

对于您想要的每个提交,完成后将它们压缩在一起。

git reset --soft HEAD~5 
git commit

其中 5 是您刚刚选择的次数。所以它可以和脚本一样工作。