为什么当我重新设置我的功能分支以在分离的头部开发结果时?

Why when I rebase my feature branch to develop result in detached head?

我在从 candidate/2.11.00 创建的功能分支上,想将其重新设置为新版本。

git rebase candidate/2.12.00
First, rewinding head to replay your work on top of it...
Upstream is not set.
could not detach HEAD

Rebase 通过 分离 HEAD,然后执行一系列 git cherry-pick 命令或等效于 copy 一些提交集, 然后将旧的分支名称——HEAD 一开始附加到的分支名称——移动到最后复制的提交。

如果 rebase 在完全成功之前必须停止,您将处于这种分离 HEAD 模式。无论需要多少手动工作,您都应该完成变基,或者完全撤销它(例如,git rebase --abort)。这将使事情变得正确,其中 正确 由您的命令定义(完成或停止尝试)。

这就是您提出的问题的答案。也许你 应该 问的问题是为什么你的 rebase 无法 start:

First, rewinding head to replay your work on top of it...
Upstream is not set.
could not detach HEAD

"Upstream is not set" 消息很奇怪。当前 Git 中没有出现这个确切的字符串,命令 git rebase candidate/2.12.00 没有理由首先需要查找当前分支的上游。

"could not detach HEAD" 错误发生在 git checkout --detach(或内部等效)失败时。当您的 Git 存储库中存在基本权限问题时,或者当您的计算机的文件系统进入冻结/只读模式时,它将失败——例如,Linux 在某些磁盘驱动器出现故障后执行此操作— 或者如果您的 Windows 防病毒系统配置不当,导致您无法执行任何工作。

原来问题出在 post-checkout 挂钩中,它应该在每次结帐后 git 拉出。当上游未设置代码 1 退出时。终止 git rebase。一旦我将退出代码更改为 0,rebase 就开始正常工作了。