我已经成功地将我的测试分支合并到我的主人但是
当我尝试使用 git rebase -ii 时得到一个错误 noop
我不能重新订购我的任何提交
这是我的 git 日志的结果,请忽略最后一行代码
这不是错误,不完全是。它只是告诉您您已请求不复制任何提交的操作,然后更新您当前的分支作为应对该空提交列表的所有零的结果。
请记住,这git rebase
可以通过复制提交来工作,就像通过git cherry-pick
. 也就是说,git rebase
意味着:
使用-i
将提交列表转换为一系列pick
命令,并在生成的命令表上打开编辑器。这些pick
命令中的每一个都会挑选一个原始提交来制作新副本。在您的情况下,列表为空,因此没有pick
要执行的命令。过去,git rebase -i
这种情况下只是失败(中止),这显然是错误的。现在git rebase -i
设置一个noop
命令。如果您删除命令表中的所有命令,则会中止 rebase。
要使列表不为空,您需要位于一个分支上,该分支上的一些提交也不在master
. 请注意,在 Git 中,许多提交同时在多个分支上:我们通常所做的工作git rebase
是移动某个分支上的提交(通常不是 master
) ,以便它们在其他提交之后进行,通常是在master
. 这在技术上是不可能的:提交不能以任何方式更改、更改或移动,因此 rebase 确实通过复制提交来工作,然后放弃原始副本以支持在新点出现的新副本:
...--o--o--o <-- master
\
*--*--* <-- branch-A (HEAD)
变成:
*--*--* <-- branch-A (HEAD)
/
...--o--o--o <-- master
\
*--*--* [abandoned]
其中第一行提交是复制的提交,通过复制现在放弃的底部行来制作,以便新提交在master
.
在 rebase 之前,有 3 个提交仅 onbranch-A
和两个提交仅 on master
。在 rebase 之后,放弃了原来的三个提交,现在只有三个提交,branch-A
并且没有提交,只在master
:branch-A
包含所有包含的提交master
。