【问题标题】:Undo local changes caused by failed git cherry-pick -n <hash>撤消由于 git cherry-pick -n <hash> 失败导致的本地更改
【发布时间】:2015-12-08 13:03:10
【问题描述】:

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

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

"git reset --merge" 撤消所有更改(包括我想要的前 4 个更改)。 “git cherry-pick --abort”表示没有进行中的樱桃挑选。

有没有办法做到这一点?我正在尝试创建一个 bash 脚本来自动执行此操作。

【问题讨论】:

    标签: git cherry-pick git-cherry-pick


    【解决方案1】:

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

    git cherry-pick <hash>
    

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

    git reset --soft HEAD~5 
    git commit
    

    5 是您刚刚挑选的樱桃的数量。所以它可以与脚本一样工作。

    【讨论】:

    • 谢谢伊格尔。我试试看。
    • 我正在创建一个 Jenkins 作业,它将尝试自动执行可能的操作,在我的示例中,挑选前 4 个提交,然后将其提交/推送到 uat 并向某人发送电子邮件告诉第五次提交有合并冲突需要解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 2018-04-13
    • 2011-08-08
    • 1970-01-01
    • 2013-11-18
    • 2012-06-24
    相关资源
    最近更新 更多