我正在做主人并做了一些不好的提交C
& D
。
A --- B --- C --- D (MASTER)
所以我决定从已知的良好提交B
重新开始工作,因为我认为在C
和/或D
提交中尝试查找错误会更容易。但是如果新的尝试由于某种原因没有成功,我也想要回到D
。所以我首先创建了一个指向B
的分离HEAD,然后创建了一个新分支(RETRY)。我的git repo现在看起来像这样:
A --- B --- C --- D (MASTER)
\
\
E --- F (RETRY)
事实证明,在B
重新开始工作更容易,我的提交F
工作得非常好。所以现在我的问题是:如何在没有合并C
和D
中完成的所有工作的情况下使MASTER指向F(但仍保留C
和D
提交如果我想在将来引用它们的话?我想最终得到:
A --- B --- C --- D
\
\
E --- F (MASTER)
答案 0 :(得分:4)
git checkout master
git branch old
git reset --hard retry
将创建(但不切换到)一个新分支(称为old
),该分支指向与master相同的提交,然后移动master
以指向与retry
相同的提交
答案 1 :(得分:1)
首先,创建一些分支,比如old_master
,将其作为master
中失败工作的指针:
git branch old_master master
现在,让master
指向F:
git checkout master
git reset --hard F
稍后,您可以结帐到old_master
以查看旧的错误提交。