【问题标题】:How can I revert the master branch to an old commit and cherry-pick a commit that was in mater? [closed]如何将 master 分支恢复为旧的提交并挑选一个在 mater 中的提交? [关闭]
【发布时间】:2021-03-04 05:30:51
【问题描述】:

我有一个提交到我的主分支的更改。在我提交之后,其他开发人员也将其他功能分支合并到 master 中。我如何将 master 还原为我之前的提交,然后仅将我的更改合并到 master 中?

现在我正计划执行以下步骤:

git checkout master
git reset --hard e3f1e37 
git push --force origin master

然后我想挑选我的更改。但是,我更改的分支已被删除,仅存在于当前主控中。有没有办法我仍然可以挑选这个?

【问题讨论】:

    标签: git cherry-pick


    【解决方案1】:

    您可以查看git reflog 的提交日志。通过搜索提交列表,您应该能够选择您需要的那些,然后简单地挑选它们。

    例如,您的 reflog 将如下所示

    user$ git reflog
    c9f9669 HEAD@{0}: commit: Fixed test cases to run on Unix
    b3ca8a4 HEAD@{1}: pull: Fast-forward
    54ba188 HEAD@{2}: pull origin master: Fast-forward
    e659a21 HEAD@{3}: reset: moving to HEAD~1
    12944d8 HEAD@{4}: reset: moving to HEAD~1
    6f40152 HEAD@{5}: reset: moving to HEAD~1
    3de61ba HEAD@{6}: pull: Fast-forward
    e659a21 HEAD@{7}: reset: moving to HEAD^1
    12944d8 HEAD@{8}: reset: moving to HEAD^1
    6f40152 HEAD@{9}: reset: moving to HEAD^1
    3de61ba HEAD@{10}: commit: Removed Query object
    6f40152 HEAD@{11}: pull: Merge made by the 'recursive' strategy.
    12944d8 HEAD@{12}: commit: API touchups
    e659a21 HEAD@{13}: commit: Test enhancements
    07419e1 HEAD@{14}: pull: Fast-forward
    

    您要查找的提交是带有哈希 3de61ba12944d8 的提交

    git cherry-pick 3de61ba
    git cherry-pick 12944d8
    

    应该和你需要的差不多。

    有关reflog 的工作原理以及如何使用它的更多信息,您可以在official Git documentation 中找到

    【讨论】:

      猜你喜欢
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 2014-08-11
      • 2012-11-09
      • 2013-09-21
      • 2022-12-19
      相关资源
      最近更新 更多