使用git将提交从主服务器移动到分支上

我试图学习如何有效地使用Git,并且我在想我应该如何(良好的做法/不好的做法?)解决以下情况:

假设我在master中有以下的提交链:

  • 初始提交
  • 提交1
  • 提交2
  • 承诺3
  • 然后我意识到在最后两个提交中完成的是完全错误的,我需要再次从提交1开始。 问题:

  • 我应该怎么做?
  • 我可以将委托2和委托3分别提交给一个单独的分支机构以备将来参考(说它们毕竟不是那么糟糕),并继续在委托方1上工作吗?

  • git branch tmp            # mark the current commit with a tmp branch
    git reset --hard Commit1  # revert to Commit1
    

    SO回答“git中'git reset'和'git checkout'有什么区别?” 对于这种操作非常有启发性

    替代文字

    git reset --hard HEAD~2 Commit1会做同样的事情(不需要先取回Commit1的SHA1)。

    由于Commit2Commit3仍然是由Git ref(这里是一个分支)引用的,所以你可以在任何时候恢复它们( git checkout tmp )。


    实际上,Darien在评论中提到(关于将Commit2Commit3移动到另一个分支):

    意外地承诺错误的分支,这让我移动它,做到了:

    git checkout correctbranch
    git rebase tmp
    git branch -d tmp
    

    这是因为初始分支已经重置为Commit1 ,这意味着git rebase tmp会在Commit1 (所以这里是Commit2Commit3 )之后的每个提交中重播新的' correctbranch '。

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

    上一篇: Move commits from master onto a branch using git

    下一篇: Point branch to new commit