2

我在 master 工作,做了一些错误的提交C& D

A --- B --- C --- D (MASTER)

所以我决定从已知的良好提交重新开始工作,B因为我认为这比尝试在C和/或D提交中找到错误更容易。但我也想在D新尝试因任何原因没有成功的情况下重新选择。所以我首先创建了一个分离的 HEAD 指向,B然后创建了一个新的分支(RETRY)。我的 git repo 现在看起来像这样:

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

事实证明,重新开始工作更容易,B而且我的提交F工作得很好。所以现在我的问题是:我如何让 MASTER 指向 F 而不合并所有在Cand中完成的工作D(但仍然保留CandD提交以防我将来想引用它们)?我想结束:

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

2 回答 2

4
git checkout master
git branch old
git reset --hard retry 

将创建(但不切换到)一个新分支(称为old),它指向与 master 相同的提交,然后移动master以指向与retry.

于 2013-01-10T10:51:16.003 回答
1

首先,创建一些分支,例如old_master将其作为指向您失败工作的指针master

git branch old_master master

现在,master指出 F:

git checkout master
git reset --hard F

稍后,您可以结帐以old_master查看旧的错误提交。

于 2013-01-10T11:00:54.160 回答