分枝过早,怎么办?

Branched too early, what to do?

我在一个分支上有一个提交。我创建了一个新分支,而我应该先切换回 master。

如何删除新分支的第一次提交,而不影响最初创建它的分支?

实际上,我想将新分支的初始提交上移 1。

重要提示:在玩 rebase 之前,要么在您的存储库副本上测试命令,要么学习如何使用 reflog 撤消对您的存储库的更改。

您描述的情况似乎是这样的:

master
*
|
|  b1    b2
*  * --- *
| / 
|/
*

而你想要

master
*
| * b2
|/
*
| * b1
|/
*

在这种情况下,变基如下:

git rebase --onto master^ b1 b2

这会将所有可从 b2 到达但 not 可从 b1 到达的提交移动到 master 之前的提交处。请注意,您实际上只能从 master 开始倒数以确定正确的陈述位置;你不能从 b1master 的共同祖先开始向前计数,因为提交不会跟踪它们的 children,只有它的 parent(s).