如何将主从git提交到不同的现有分支

这个问题在这里已经有了答案:

  • 使用Git 9的答案将最近的提交移到新分支
  • 在git中,我如何从一个分支中删除一个提交并将其应用到另一个分支? 2个答案

  • 如果我没有弄错,在你提交之前,你有两个同步分支, masterdev ,并且只是忘了切换分支。

    如果是这样的话,我们有:

    ----------------
    git log in dev
    
    xxx
    yyy
    ...
    ----------------
    

    和:

    ----------------
    git log in master
    
    ccc
    bbb
    aaa
            <---- here you forgot to switch branch
    xxx
    yyy
    ...
    ----------------
    

    解决方案是:

    首先,确保:

    git status -s
    

    返回空结果。

    接下来,从masterdev获取所有新的提交:

    git checkout dev
    git merge master
    

    现在回到你的master

    git checkout master
    

    删除不必要的提交:

    git reset --hard HEAD~3
    

    数字~3是要删除的提交数量。

    记住: git status -s必须返回空结果。 否则, git reset --hard会导致数据丢失。


    为了应对另一个分支,你可以使用樱桃采摘:

    git cherry-pick <commit>
    

    删除并不那么容易。 你可以使用rebase和squash或者编辑commit:

    git rebase -i <commit>~1
    

    但是我不确定何时在重新绑定期间选择编辑,如果您也可以编辑文件而不是仅仅提交消息。


    你可以cherry-pick你的提交过来的develop和交互之后rebase你的master分支:

  • git checkout develop
  • git cherry-pick aabbcc
  • git cherry-pick ddeeff
  • ....
  • git checkout master
  • git rebase 123456 -i
  • 在你犯错之前123456是一个提交。 这将打开一个编辑器,显示每个将受到rebase影响的提交。 删除与要放弃的提交相对应的行并退出编辑器。

    链接地址: http://www.djcxy.com/p/4287.html

    上一篇: How to move git commits from master to a different existing branch

    下一篇: What's the difference between "git reset" and "git checkout"?