从分支中删除提交并将其放在单独的分支上
Remove a commit from a branch and put it on a separate branch
我的项目只有一个分支 master
。假设我已经执行了四次提交 A
、B
、C
和 D
。现在我才意识到 D
太实验性了,所以它不应该在 master
上(目前),而是在它自己的一个单独的分支上,比如 experimental
。
我如何:
- 将
D
放在自己的分支上?
- 作为
master
返回 C
并在此分支上执行新提交?
(注意:我不想只是撤消提交)
首先,在 D
提交上创建 experimental
分支。此时会和master
.
一样
做一个git checkout master
.
做一个git reset --hard HEAD~1
。 (这会让你提交 C
)
现在做一个 push -f
(从 master 分支。这将推送 C
作为 master
上的最后一次提交)。
这应该可以解决。
首先,您需要 branch
来自 master
的 experimental
分支:
mureinik@computer ~/src/git/myproject [master] $ git branch experimental
然后,您可以 reset
master
分支到后面的一个提交:
mureinik@computer ~/src/git/myproject [master] $ git reset HEAD~ --hard
我的项目只有一个分支 master
。假设我已经执行了四次提交 A
、B
、C
和 D
。现在我才意识到 D
太实验性了,所以它不应该在 master
上(目前),而是在它自己的一个单独的分支上,比如 experimental
。
我如何:
- 将
D
放在自己的分支上? - 作为
master
返回C
并在此分支上执行新提交?
(注意:我不想只是撤消提交)
首先,在 D
提交上创建 experimental
分支。此时会和master
.
做一个git checkout master
.
做一个git reset --hard HEAD~1
。 (这会让你提交 C
)
现在做一个 push -f
(从 master 分支。这将推送 C
作为 master
上的最后一次提交)。
这应该可以解决。
首先,您需要 branch
来自 master
的 experimental
分支:
mureinik@computer ~/src/git/myproject [master] $ git branch experimental
然后,您可以 reset
master
分支到后面的一个提交:
mureinik@computer ~/src/git/myproject [master] $ git reset HEAD~ --hard