【问题标题】:How to unsquash pushed commit to bitbucket如何取消对 bitbucket 的推送提交
【发布时间】:2019-10-28 19:42:07
【问题描述】:

我已将 7 个提交(使用 git rebase -i HEAD~7)压缩为一个提交并将更改推送到 bitbucket 服务器。现在,我意识到我需要以原始状态推送 7 个提交。

我试过git refloggit reset --hard HEAD@{7} 但只能看到一个提交。

【问题讨论】:

    标签: git terminal git-bash git-reset git-squash


    【解决方案1】:

    git reflog中,应该有一行,

    8847515 HEAD@{7}: rebase -i (start): checkout HEAD~7
    

    现在它可能已在您的存储库中变为 HEAD@{8}HEAD@{9}。找到该行正下方的 stash 条目,它是交互式变基开始之前的原始 HEAD。可能类似于0874c8a HEAD@{10}: commit: foo bar。而是重置到此提交,

    git reset 0874c8a --hard
    

    【讨论】:

    • 或者git reset --hard ORIG_HEAD,如果在挤压和推动之间没有做太多。
    【解决方案2】:

    撤消变基的最简单方法:

    git reset --hard ORIG_HEAD
    # or
    git checkout -b recoveredBranch ORIG_HEAD
    

    这仅适用于最后一次变基。

    现在HEAD@{7} 将指向脑后的 7 个状态。很难预测它会指向哪里。这取决于你一直在做什么。每次重置/结帐都意味着您必须增加这个数字。

    作为最后的手段,在 reflog 中找到 rebase 之前的最后一次提交并使用其哈希:

    
    git checkout -b recoveredBranch a0a0ab0a
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-25
      • 2021-09-14
      • 1970-01-01
      • 2014-05-06
      • 2021-01-03
      • 2022-05-31
      • 2016-07-08
      • 1970-01-01
      相关资源
      最近更新 更多