把主从提交到使用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 reset”和“git checkout”在git中有什么不同? “对于这种操作是非常有启发性的

替代文字

git reset --hard HEAD~2会做同样的事情(不需要先取回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 ”。