从fork仓库向上游仓库analytics分支推送时报错如何解决
问题解答
推送代码到上游analytics分支的解决方法
你遇到的error: src refspec analytics does not match any报错原因是本地不存在名为analytics的分支,git推送时默认会查找和目标远程分支同名的本地分支作为推送源,找不到对应分支就会触发该报错。
你可以根据自己的使用场景选择以下两种方案:
方案1:无需新建本地分支,直接把本地main分支内容推送到上游analytics分支
直接使用指定源分支和目标分支的推送语法即可:
git push upstream main:analytics
该命令的规则为git push <远程仓库名> <本地源分支名>:<远程目标分支名>,不需要创建本地analytics分支就能完成推送。
方案2:长期在analytics分支开发,先创建本地对应分支再推送
如果你后续需要持续在analytics分支迭代,建议先创建和远程对应的本地分支:
- 基于上游的analytics分支创建本地同名分支并切换到该分支:
git checkout -b analytics upstream/analytics
- 将你在本地main分支上的修改合并到本地analytics分支,如有冲突按需解决后提交:
git merge main
- 直接推送到上游analytics分支即可,此时本地已存在对应分支不会再报错:
git push upstream analytics
fork仓库的合理性判断
你可以根据自己的实际场景选择是否保留fork:
- 如果你对原仓库有直接推送权限(你已经可以成功推上游main分支,说明你有权限),且只是想要方便找到该仓库,完全可以不用fork,给原仓库点star就能在自己的star列表里快速找到,直接克隆原仓库开发会省去多远程管理的成本。
- 如果你需要做独立于原仓库的定制修改、或者不想直接修改原仓库的分支避免影响其他协作人员,fork是合理的分布式协作标准用法,保留fork也没有问题。
- 如果你没有原仓库的推送权限,fork是唯一可以自主提交修改、后续给原仓库提PR的标准方案,完全合理。
内容的提问来源于stack exchange,提问作者Mtkel N
相关产品推荐
相关产品推荐

