我在git中创建了一个错误分支的分支,并且已经将旧分支合并为master,如何从其他分支中删除提交?

时间:2011-12-08 15:29:18

标签: git svn git-svn

当我创建一个分支时,我意外地从一个实验分支创建了它,我不希望任何这些更改提交到我们的SVN存储库。我创建的分支已经合并到master中,旧分支被丢弃了。我刚刚在运行git svn dcommit之前意识到我要提交的内容。

如何从原始分支提交单个提交?我已经在git log中单独列出了它。

1 个答案:

答案 0 :(得分:0)

如果您遇到类似情况:

x--x--x--x--x1--------m--y--y (master)
    \                /
     \              /
      -o--o--o--z--z (deleted)

你可以:

  • 制作tmp分支,标记m并重置为x1
  • 使用git reflog获取已删除分支“br”的HEAD并在其上创建分支“br”,并标记o1(在实验提交之前最新的“旧”提交)
              [tagM]
                -m--y--y (tmp)
               /
              /
x--x--x--x--x1  (master)
    \                
     \              
      -o--o--o1--z--z (br)
            [tagO]
  • git checkout br&& git rebase --onto master o1
              [tagM]
                   -m--y--y (tmp)
                  /
                 /
x--x--x--x------x1  (master)
    \            \            
     \            \    
      -o--o--o1    z--z (br)
            [tagO]
  • 仅合并您想要掌握的提交:git checkout master && git merge br
                [tagM]
                   -m--y--y (tmp)
                  /
                 /
x--x--x--x------x1--------m2  (master)
    \            \       /      
     \            \     /
      -o--o--o1    z'--z' (br)
            [tagO]
  • 重新定义自master之上的初始合并以来完成的其他提交。
                [tagM]
                   -m
                  /
                 /
x--x--x--x------x1--------m2--y'--y'  (master,tmp)
    \            \       /      
     \            \     /
      -o--o--o1    z'--z' (br)
            [tagO]
  • git checkout tmp && git rebase --onto master tagM && git merge master
    (快进合并)