从分支中删除提交并将其放在单独的分支上

Remove a commit from a branch and put it on a separate branch

我的项目只有一个分支 master。假设我已经执行了四次提交 ABCD。现在我才意识到 D 太实验性了,所以它不应该在 master 上(目前),而是在它自己的一个单独的分支上,比如 experimental

我如何:

(注意:我不想只是撤消提交)

首先,在 D 提交上创建 experimental 分支。此时会和master.

一样

做一个git checkout master.

做一个git reset --hard HEAD~1。 (这会让你提交 C
现在做一个 push -f(从 master 分支。这将推送 C 作为 master 上的最后一次提交)。

这应该可以解决。

首先,您需要 branch 来自 masterexperimental 分支:

mureinik@computer ~/src/git/myproject [master] $ git branch experimental

然后,您可以 reset master 分支到后面的一个提交:

mureinik@computer ~/src/git/myproject [master] $ git reset HEAD~ --hard