Git rebase进程被分离的头卡住

yi0zb3m4  于 12个月前  发布在  Git
关注(0)|答案(3)|浏览(197)

我正在某个项目上尝试重写倒数第二个提交来修复一个错字,方法是运行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
编辑:按照要求,这是当我保存TODO列表时Git给我的消息:
adrian$ git rebase -i HEAD~1
注意:检查'da 91 bbcedc 78 cb 2 ebcaa 9dc 51 f38 c8 d 0a 550195 d'。
您处于“detached HEAD”状态。您可以四处查看,进行实验性更改并提交它们,并且您可以通过执行另一次 checkout 来丢弃在此状态下所做的任何提交,而不会影响任何分支。
如果你想创建一个新的分支来保留你创建的提交,你可以(现在或以后)通过再次使用-b和checkout命令来完成。示例:
git checkout -B
HEAD is now at da91bbc. Test message
此仓库已配置为Git LFS,但在您的路径中找不到'git-lfs'。如果您不再希望使用Git LFS,请通过删除.git/hooks/post-checkout来删除此钩子。无法分离HEAD
此时运行git rebase --continue后的输出:
没有进行重定基?

y1aodyip

y1aodyip1#

当您在待办事项文件中放置edit以进行交互式rebase时,通常会出现分离的HEAD消息。您一定是错误地将edit而不是reword放置在那里了。或者Git可能因为在输出中发现了错误而进入了这种模式(在冲突中也会进入这种模式):
这个储存库是为Git LFS设定的,但是在您的路径中找不到'git-lfs'。如果您不想再使用Git LFS,请删除.git/hooks/post-checkout来移除这个拦截。could not detach HEAD
您应该先解决此错误,然后再继续。Git会告诉您该怎么做。
edit模式允许像reword模式一样修改提交消息,但也允许修改文件内容。因此,Git让你处于这样一种状态,你可以提交更改,然后继续使用git rebase --continue重定基。

edit模式下编辑提交消息(如reword

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

git commit --amend

字符串
这将打开编辑器,让您编辑提交消息。

git rebase --continue

离开未完成的重定基地

当我保存文件Git时,它并没有像往常一样显示下一个重定基窗口来为该提交选择一个新的名称,而是将自己放置在该提交中并通知我一个分离的HEAD状态,从那时起在git status命令中也会显示,直到我键入git checkout master
这不是离开未完成重定基的正确方法,您应该使用

git rebase --abort


而不是.

bakd9h0s

bakd9h0s2#

我在使用git rebase -i时也遇到了同样的问题,输出结果完全相同,而且git完全没有说明原因。
通过反复试验,我最终发现我的post-checkout钩子(repodir/.git/hooks/post-checkout)以非零状态退出。一旦我在它的末尾添加了一个exit 0,rebase就成功了,而没有让repo处于分离的HEAD状态。

4c8rllxm

4c8rllxm3#

我在做换基壁球的时候也面临着同样的问题。我找不到这个问题的原因。
我的解决办法是复制这个主分支发生这个问题,以其他新的分支,让我们说分支“天乐”。
当我做同样的rebase步骤在新的“天堂乐”分支,它的工作正常。
然后我选择这个由变基到主分支创建的提交。

相关问题