Git rebase 进程卡在分离头上

Adr*_*ián 5 git rebase

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

我一保存文件,Git 就不会像往常一样向我显示下一个 rebase 窗口来为该提交选择一个新名称,而是自行放置并通知我该提交的分离 HEAD 状态,这也显示在git status命令中从那时起,直到我输入git checkout master.

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

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

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

adrian$ git rebase -i HEAD~1

注意:检查“da91bbcedc78cb2ebcaa9dc51f38c8d0a550195d”。

您处于“分离头”状态。您可以环顾四周,进行实验性更改并提交它们,并且您可以通过执行另一次检出来放弃您在此状态下所做的任何提交,而不会影响任何分支。

如果你想创建一个新分支来保留你创建的提交,你可以(现在或以后)通过再次使用 -b 和 checkout 命令来这样做。例子:

git 结帐 -b

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

此存储库已针对 Git LFS 进行配置,但在您的路径中未找到“git-lfs”。如果您不再希望使用 Git LFS,请通过删除 .git/hooks/post-checkout 来删除此挂钩。无法分离 HEAD

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

没有进行变基?

Ste*_*ley 11

我也遇到了同样的问题git rebase -i,输出完全相同,但 git 完全没有说明原因。

通过反复试验,我最终发现我的结帐后挂钩(repodir /.git/hooks/post-checkout)正在以非零状态退出。一旦我exit 0在其末尾添加了 an ,变基就会成功,而不会使存储库处于分离的 HEAD 状态。


Mel*_*ius 6

当您放入edit交互式 rebase 的待办事项文件时,分离的 HEAD 消息通常会出现。你一定是错把edit有代替reword。或者 Git 可能因为输出中发现的错误而进入了这个模式(它也进入了冲突):

此存储库已针对 Git LFS 进行配置,但在您的路径中未找到“git-lfs”。如果您不再希望使用 Git LFS,请通过删除 .git/hooks/post-checkout 来删除此挂钩。无法分离 HEAD

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

edit模式允许像reword模式一样修改提交消息,但也允许修改文件内容。因此,Git 使您处于可以提交更改然后继续使用git rebase --continue.

rewordedit模式中编辑提交消息(如)

当您只想编辑提交消息并继续变基时,运行

git commit --amend
Run Code Online (Sandbox Code Playgroud)

这将打开编辑器以让您编辑提交消息。完成后,运行

git rebase --continue
Run Code Online (Sandbox Code Playgroud)

留下未完成的变基

我一保存文件,Git 就不会像往常一样向我显示下一个 rebase 窗口来为该提交选择一个新名称,而是自行放置并通知我该提交的分离 HEAD 状态,这也显示在git status命令中从那时起,直到我输入git checkout master.

这不是留下未完成的变基的正确方法,您应该使用

git rebase --abort
Run Code Online (Sandbox Code Playgroud)

反而。