我正在尝试使用git rebase -i但我收到了noop错误

时间:2019-09-30 22:09:32

标签: git github noop

但是我已经成功地将测试分支合并到了我的主服务器上

当我尝试使用git rebase -i时出现错误提示

我无法重新排序我的任何提交

this is the kind result i expect

but instead i get this error

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

enter image description here

1 个答案:

答案 0 :(得分:0)

那不是错误,也不完全是。只是告诉您,您已请求复制 no 提交,然后更新当前分支的操作​​,因为该操作处理了该空的提交列表中的所有零。

请记住,git rebase通过复制提交起作用,就像git cherry-pick那样。也就是说,git rebase的意思是:

  • 发现由于某些原因不够完善的一组提交。
  • 使用该提交列表,导航到一个特定的提交,然后开始复制。
  • 在复制所有提交之后,移动当前分支名称,使其指向最后一个复制的提交,从而放弃不再可找到的所有未复制的提交。

使用-i将提交列表变成一系列pick命令,并在生成的命令表上打开编辑器。这些pick命令中的每个命令都会挑选一个原始提交,以制作新副本。在您的情况下,该列表为空,因此没有pick命令要执行。过去,git rebase -i只是在这种情况下失败(中止),这显然是错误的。现在git rebase -i设置了一个noop命令。如果删除命令表中的所有命令,则会中止重新设置。

要使列表为非空,您需要位于具有某些提交的分支上,这些提交也不在master上。请注意,在Git中,许多提交都同时在许多分支上:我们通常给git rebase的工作是在某些地方 move 提交分支(通常是 not master),以便它们在其他提交之后出现,通常是master上的 。从技术上讲这是不可能的:提交不能以任何方式进行更改,更改或移动,因此通过复制提交,重新构建基础确实有效,然后放弃原始文件,转而使用新的副本:

...--o--o--o   <-- master
      \
       *--*--*   <-- branch-A (HEAD)

成为:

             *--*--*   <-- branch-A (HEAD)
            /
...--o--o--o   <-- master
      \
       *--*--*   [abandoned]

其中提交的第一行是复制的提交,是通过复制现在废弃的底部行来完成的,以便新的提交位于master中的最后一个提交之后。

在重新设置基准之前,有3个仅在branch-A上的提交和2个仅在master上的提交。重新设置基准之后,放弃了原来的三个提交,现在只有三个branch-A提交,而 no 提交仅master提交:branch-A包含 all master所包含的提交。