Git rebase进程陷入了分离的头

时间:2017-12-29 12:02:25

标签: git rebase

我正在尝试通过运行git rebase -i HEAD~3(使用“nano”编辑器)然后将该提交的默认pick选项更改为某个项目来重写倒数第二次提交以修复拼写错误rreword(在初始的rebase文件窗口中),并且不修改任何其他内容。我在master分支上做这件事,如果有用的话。

一旦我保存文件,Git,而不是像往常一样向我显示下一个rebase窗口为该提交选择一个新名称,它会将自己放入并通知我一个具有该提交的独立HEAD状态,这也是从那时起git status命令显示,直到我输入git checkout master

无论我尝试多少次,都会发生同样的事情。

附加说明:我之前通过运行单个命令将已使用的编辑器更改为“nano”:git config --global core.editor nano

编辑:根据要求,这是Git在保存TODO列表时给我的消息:

  

adrian $ git rebase -i HEAD~1

     

注意:请查看'da91bbcedc78cb2ebcaa9dc51f38c8d0a550195d'。

     

你处于'超级HEAD'状态。你可以环顾四周,做实验   更改并提交它们,您可以放弃您在此中提交的任何提交   通过执行另一次结账而不影响任何分支的状态。

     

如果您想创建一个新分支以保留您创建的提交,您可以   通过再次使用-b和checkout命令来执行此操作(现在或稍后)。例如:

     

git checkout -b

     

HEAD现在在da91bbc ...测试消息

     

此存储库是为Git LFS配置的,但在您的路径中找不到“git-lfs”。如果您不再希望使用Git LFS,请删除.git / hooks / post-checkout以删除此挂钩。   无法分离HEAD

此时运行git rebase --continue后的输出:

  

没有进行任何重组?

2 个答案:

答案 0 :(得分:3)

当您将edit放入交互式rebase的待办事项文件中时,通常会显示分离的HEAD消息。您必须错误地将edit放在那里而不是reword。或者由于输出中发现错误,Git可能已进入此模式(也会在冲突中输入):

  

此存储库是为Git LFS配置的,但在您的路径中找不到“git-lfs”。如果您不再希望使用Git LFS,请删除.git / hooks / post-checkout以删除此挂钩。无法分离HEAD

您应该在继续之前解决此错误。 Git告诉你该怎么做。

edit模式允许修改提交消息,如reword模式,还允许修改文件内容。因此,Git让您处于可以提交更改然后使用git rebase --continue继续变基的状态。

reword模式

中编辑提交消息(如edit

如果您只想编辑提交消息并继续重新定位,请运行

git commit --amend

打开编辑器以允许您编辑提交消息。完成后,运行

git rebase --continue

离开未完成的rebase

  

一旦我保存文件,Git,而不是像往常一样向我显示下一个rebase窗口为该提交选择一个新名称,它会将自己放入并通知我一个具有该提交的独立HEAD状态,这也是从那时起git status命令显示,直到我输入git checkout master

这不是留下未完成的rebase的正确方法,你应该使用

git rebase --abort

代替。

答案 1 :(得分:0)

我在git rebase -i上遇到了同样的问题,具有相同的确切输出,而且绝对没有从git中得到原因的提示。

通过反复试验,我最终发现我的检出后挂钩( repodir /。git / hooks / post-checkout)的退出状态为非零。一旦在其末尾添加了exit 0,重新设置成功就成功了,而没有使回购处于分离的HEAD状态。