分枝过早,怎么办?
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
开始倒数以确定正确的陈述位置;你不能从 b1
和 master
的共同祖先开始向前计数,因为提交不会跟踪它们的 children,只有它的 parent(s).
我在一个分支上有一个提交。我创建了一个新分支,而我应该先切换回 master。
如何删除新分支的第一次提交,而不影响最初创建它的分支?
实际上,我想将新分支的初始提交上移 1。
重要提示:在玩 rebase
之前,要么在您的存储库副本上测试命令,要么学习如何使用 reflog 撤消对您的存储库的更改。
您描述的情况似乎是这样的:
master
*
|
| b1 b2
* * --- *
| /
|/
*
而你想要
master
*
| * b2
|/
*
| * b1
|/
*
在这种情况下,变基如下:
git rebase --onto master^ b1 b2
这会将所有可从 b2
到达但 not 可从 b1
到达的提交移动到 master
之前的提交处。请注意,您实际上只能从 master
开始倒数以确定正确的陈述位置;你不能从 b1
和 master
的共同祖先开始向前计数,因为提交不会跟踪它们的 children,只有它的 parent(s).