使用git将提交从主服务器移动到分支上
我试图学习如何有效地使用Git,并且我在想我应该如何(良好的做法/不好的做法?)解决以下情况:
假设我在master中有以下的提交链:
然后我意识到在最后两个提交中完成的是完全错误的,我需要再次从提交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)。
由于Commit2
和Commit3
仍然是由Git ref(这里是一个分支)引用的,所以你可以在任何时候恢复它们( git checkout tmp
)。
实际上,Darien在评论中提到(关于将Commit2
和Commit3
移动到另一个分支):
意外地承诺错误的分支,这让我移动它,做到了:
git checkout correctbranch
git rebase tmp
git branch -d tmp
这是因为初始分支已经重置为Commit1
,这意味着git rebase tmp
会在Commit1
(所以这里是Commit2
和Commit3
)之后的每个提交中重播新的' correctbranch
'。