【问题标题】:How to create branch from several commits back?如何从多个提交创建分支?
【发布时间】:2016-11-23 02:48:34
【问题描述】:

我对 git 还很陌生。

目前我有如下所示的提交,这些提交已被推送到远程。

当我不得不开始构建 ui 时,我创建了一个分支 (branch1)。 但我意识到,当我处理另一个功能(绿色)时,我应该创建第二个分支。

如何从当前设置转换为以下设置?如果它使事情变得更容易,我正在与其他合作者合作。

更新: 所有答案都有效,我接受了提交的第一个答案,但使用了答案的组合。要撤消提交,我们可以使用交互式 rebase 工具 (Deleting a commit in Between other commits)。

【问题讨论】:

    标签: git


    【解决方案1】:

    不要挑剔。使用 git-rebase。

    这就是你现在所在的位置:

    1)在branch1的头部新建一个分支:

    git branch branch2
    

    2) 将branch1 重置为其头部所在的位置:

    您可以使用git log 来查找最后一次良好提交的哈希,或者(在我的示例中)使用HEAD~2 来返回两次提交。

    git reset --hard <back-there>
    

    3) 切换到branch2

    git checkout branch2
    

    4) 将所有内容 branch1 直到 branch2 重新定位到 master

    git rebase --onto master branch1
    

    【讨论】:

    • 附带说明,git rebase 本质上是自动化的,但是需要许多git cherry-pick 命令才能完成工作。所以“不要樱桃采摘,而是变基”的意思是“不要手工采摘,使用电动工具选择器”。 :-)
    • 即使我有一个相互竞争的答案,我也可以无限期地说……这是正确的答案。
    【解决方案2】:

    真的太棒了!

    首先,使用git log 找到您要创建分支的提交哈希。复制新分支的 sha hash。

    运行以下命令(将 sha 哈希替换为您的实际 sha):

    git checkout 051ab99e1bb7359d7136d621d9feacfc82aa8721
    git checkout -b my-new-branch
    git push --set-upstream origin my-new-branch #optional, only if you want to push it to remote
    

    之后,您可以使用git cherry-pick 添加绿色提交,如下所示:

    git cherry-pick SHA
    

    【讨论】:

      【解决方案3】:
      $ git checkout master              # go to master branch
      $ git checkout -b branch2          # create & checkout branch2
      
      $ git reflog                       # copy commit hash of your two green commits
      $ git cherry-pick <commit-hash-1>  # pick frist green commit
      $ git cherry-pick <commit-hash-2>  # pick second green commit
      

      您的 branch2 已准备就绪。现在您应该撤消 branch1 的最后两次提交 $ git checkout branch1 # go to branch1 $ git reset --hard HEAD~2 # undo last two commits

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-15
        • 2012-10-11
        • 2015-03-22
        • 1970-01-01
        • 2012-01-24
        • 2017-07-07
        • 2019-09-29
        • 2011-11-02
        相关资源
        最近更新 更多