0

我已经成功地将我的测试分支合并到我的主人但是

当我尝试使用 git rebase -ii 时得到一个错误 noop

我不能重新订购我的任何提交

这是我期望的好结果

但是我得到了这个错误

这是我的 git 日志的结果,请忽略最后一行代码

在此处输入图像描述

4

1 回答 1

0

这不是错误,不完全是。它只是告诉您您已请求不复制任何提交的操作,然后更新您当前的分支作为应对该空提交列表的所有零的结果。

请记住,这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

于 2019-09-30T22:35:34.620 回答