Git分离HEAD状态下push时指代当前提交的关键字是什么
分离头指针状态下指代当前提交的固定引用
HEAD在分离头指针(detached HEAD)状态下本身就可以正确指代当前检出的提交,你看到的推送报错和HEAD引用失效无关。报错原因是:当源端推送的是直接指向提交的ref(分离头指针下的HEAD就属于这种情况)时,Git无法自动推断你写的目标名foo属于什么类型的ref(是分支、标签还是其他引用),没法自动补全refs/开头的完整路径,才会推送失败。- 如果你需要和HEAD等价、无需复制提交哈希的固定常量关键字,直接使用Git原生提供的单字符别名
@即可。@是HEAD的官方简写,无论你处于正常分支状态还是分离头指针状态,它都始终指向当前工作区检出的提交,和HEAD的行为100%一致。 - 要解决这个推送报错,你只需要写全目标端的完整ref路径即可,源端用HEAD或者
@都可以正常执行:
标准写法:git push origin HEAD:refs/heads/foo
简写写法:git push origin @:refs/heads/foo
上述命令执行后会在远程仓库创建名为foo的分支,指向你当前检出的提交,和预期效果完全一致。
内容的提问来源于stack exchange,提问作者Simoyd
相关产品推荐
相关产品推荐

