如何修复多远程仓库下出现的“HEAD detached at origin/development”问题
解决Git切换到origin/development并正常推送的问题
你当前的核心问题是:本地development分支默认关联的是remote_2/development,直接检出远程分支origin/development会进入分离HEAD状态——这种状态下的提交无法直接推送到远程仓库,必须关联到本地分支才能正常推送。
给你两种实用解决方案:
方案一:修改现有本地development分支的上游关联
如果想继续用当前的development分支推送到origin,执行以下步骤:
- (可选)先拉取origin的最新代码并合并到本地分支,确保代码同步:
git fetch origin git checkout development git merge origin/development - 修改该分支的上游仓库为
origin/development:git branch -u origin/development
完成后,你在development分支的提交直接执行git push就会推送到origin;偶尔需要推送到remote_2时,用git push remote_2 development指定远程仓库即可。
方案二:新建本地分支关联origin/development
如果不想改动现有development分支的关联,可新建一个专门对接origin的分支:
- 先拉取origin的最新代码:
git fetch origin - 基于
origin/development创建本地分支(比如命名为origin-dev)并直接切换过去:git checkout -b origin-dev origin/development
这个origin-dev分支默认上游就是origin/development,直接执行git push就能推送到origin;偶尔需要推送到remote_2时,用git push remote_2 origin-dev:development将本地分支提交推送到remote_2的development分支。
补充说明:远程分支(如origin/development)是Git在本地保存的只读副本,直接检出它会进入分离HEAD状态,此时的提交不会绑定到任何本地分支,因此无法直接推送——必须通过本地分支关联远程分支,才能实现正常的推送流程。
内容的提问来源于stack exchange,提问作者Stefan T
相关产品推荐
相关产品推荐

