使用git将提交从主服务器移动到分支上
我正在努力学习如何有效地使用Git,我想知道我应该如何(好的做法/坏的做法?)解决以下情况: 假设我在master中有以下提交链:使用git将提交从主服务器移动到分支上,git,commit,git-branch,git-reset,Git,Commit,Git Branch,Git Reset,我正在努力学习如何有效地使用Git,我想知道我应该如何(好的做法/坏的做法?)解决以下情况: 假设我在master中有以下提交链: 初始提交 提交1 承诺2 承诺3 然后我意识到在最后两次提交中所做的是完全错误的,我需要再次从提交1开始。问题: 我该怎么做 我是否可以将Commit 2和Commit 3移动到一个单独的分支以备将来参考(说它们并没有那么糟糕)并继续从Commit 1开始在master上工作 所谓的“答案”对这种操作很有指导意义 git重置--hard HEAD~2也会做
- 初始提交
- 提交1
- 承诺2
- 承诺3
- 我该怎么做
- 我是否可以将Commit 2和Commit 3移动到一个单独的分支以备将来参考(说它们并没有那么糟糕)并继续从Commit 1开始在master上工作
Commit2
和Commit3
仍然是Git ref(这里是一个分支)的引用,因此您仍然可以随时恢复到它们(Git checkout tmp
)
实际上,在评论中提到(关于将
Commit2
和Commit3
移动到另一个分支机构):
无意中犯了错误,这让我动了一下,做了:
这在这里起作用,因为初始分支已重置为
Commit1
,这意味着git-rebase-tmp
将在Commit1
(因此这里Commit2
和Commit3
)之后重放每个提交到新的“correctbranch
”。谢谢!只是一个观察:在gitk中,tmp分支没有显示。它不应该这样做吗,因为Commit1对这两个分支来说都很常见?@Paul:你试过“gitk--all
”吗?
git branch tmp # mark the current commit with a tmp branch
git reset --hard Commit1 # revert to Commit1
git checkout correctbranch
git rebase tmp
git branch -d tmp