移动使用Git
问题描述:
我想学习如何有效地使用Git和我不知道我应该如何(?好的做法/糟糕的做法)解决以下情况下,从主提交到分支有提交的下列链在主:移动使用Git
- 初始提交
- 提交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回答 “What's the difference between 'git reset' and 'git checkout' in git?” 是那种操作
颇有启发一个git reset --hard HEAD~2
会做同样的事情(而不需要找回的SHA1首先是Commit1
)。
由于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
'。
谢谢!只是一个观察:在gitk tmp分支不显示。它是否应该这样做,因为Commit1对于两个分支都很常见? – Paul 2010-09-15 15:46:42
@保罗:你尝试过一个“'gitk --all'”吗? – VonC 2010-09-15 15:47:23