使用git将提交从主服务器移动到分支上 [英] Move commits from master onto a branch using git
问题描述
我试图学习如何有效地使用Git,我想知道我应该如何(良好的做法/不好的做法?)解决以下情况:假设我在master中有下面的提交链:
li>
然后我意识到在最后两次提交中完成的操作是完全错误的,我需要再次从提交1开始。问题:
- 我应该怎么做?
- 我可以将提交2和3移动到单独的分支以保留以备将来参考(说它们毕竟不是那么糟糕),并继续从第一次提交到master?
git branch tmp#用tmp分支标记当前提交
git reset --hard Commit1#还原为Commit1
回答在评论中提到了(关于移动 Commit2
和 Commit3
到另一个分支):
<
git 无意中犯了错误的分支,这让我移动它: checkout correctbranch
git rebase tmp
git branch -d tmp
这里有效因为初始分支已被重置为 Commit1
,这意味着 git rebase tmp
会在 Commit1
(所以这里 Commit2
和 Commit3
)添加到新的' correctbranch
'。
I'm trying to learn how to use Git effectively and I'm wondering how I should (good practice/bad practice?) solve the following case:
Say I have the following chain of commits in master:
- Initial commit
- Commit 1
- Commit 2
- Commit 3
Then I realize that what's done in the last two commits is completely wrong and I need to start from Commit 1 again. Questions:
- How should I do that?
- Can I move Commit 2 and 3 to a separate branch to keep for future reference (say they weren't that bad after all) and continue working from Commit 1 on master?
git branch tmp # mark the current commit with a tmp branch
git reset --hard Commit1 # revert to Commit1
The SO answer "What's the difference between 'git reset' and 'git checkout' in git?" is quite instructive for that kind of operation
A git reset --hard HEAD~2
would do the same thing (without needing to get back the SHA1 for Commit1
first).
Since Commit2
and Commit3
are still reference by a Git ref (here a branch), you can still revert to them anytime you want (git checkout tmp
).
Actually, Darien mentions in the comments (regarding moving Commit2
and Commit3
to another branch):
Accidentally committed to the wrong branch, this let me move it, did:
git checkout correctbranch
git rebase tmp
git branch -d tmp
This works here since the initial branch has been reset to Commit1
, which means the git rebase tmp
will replay every commit after Commit1
(so here Commit2
and Commit3
) to the new 'correctbranch
'.
这篇关于使用git将提交从主服务器移动到分支上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!