在git中,如何在没有合并的情况下将MASTER指针(分支)指向另一个提交?

时间:2013-01-10 10:48:33

标签: git version-control

我正在做主人并做了一些不好的提交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工作得非常好。所以现在我的问题是:如何在没有合并CD中完成的所有工作的情况下使MASTER指向F(但仍保留CD提交如果我想在将来引用它们的话?我想最终得到:

A --- B --- C --- D
       \
        \
         E --- F (MASTER)

2 个答案:

答案 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以查看旧的错误提交。