在已有Git仓库内初始化的子仓库推送到GitHub失败求助
解决Part3 Node.js后端仓库推送至GitHub的问题
问题梳理
- 本地
fso目录作为主仓库,已成功推送part1/part2等React项目到同名GitHub仓库 - 在
fso/part3/phonebook目录用git init初始化独立Node项目,关联新GitHub仓库后,推送时遭遇认证失败(密码认证已废弃,使用个人访问令牌也无效) - 尝试
git pull origin main --allow-unrelated-histories后问题依旧,担心本地代码丢失
解决方案
1. 校验远程仓库关联格式
先查看当前远程仓库地址是否为SSH格式(你之前主仓库用SSH克隆成功,优先用SSH避免HTTPS认证坑):
git remote -v
如果显示HTTPS地址(如https://github.com/xxx/phonebook.git),先删除现有关联:
git remote remove origin
再重新添加SSH格式的远程地址:
git remote add origin git@github.com:你的用户名/phonebook.git
2. 确认SSH密钥有效性
验证本地SSH密钥是否能正常连接GitHub:
ssh -T git@github.com
返回Hi 你的用户名! You've successfully authenticated, but GitHub does not provide shell access.即为正常;若失败,需重新将本地SSH公钥添加到GitHub账户设置中。
3. 先备份代码,杜绝丢失风险
在执行任何pull/push操作前,把phonebook目录的所有文件复制到本地其他路径,确保代码有备份。
4. 统一分支名并推送
GitHub新建仓库默认分支为main,本地初始化仓库默认分支可能是master,先统一分支名:
git branch -M main
如果远程仓库是空的(无README、.gitignore等初始化文件),直接推送即可:
git push -u origin main
如果远程仓库有初始化文件,先执行拉取并允许无关历史合并:
git pull origin main --allow-unrelated-histories
手动解决合并冲突后,再推送:
git push origin main
5. HTTPS模式下的令牌问题排查(若坚持用HTTPS)
确保个人访问令牌拥有repo权限,推送时用户名填GitHub账号名,密码填令牌。同时清理本地可能留存的旧凭据:
git config --global --unset credential.helper
重新推送时输入令牌即可。
关键提醒
fso主仓库和phonebook子仓库是嵌套的独立仓库,所有针对phonebook的git操作务必在phonebook目录内执行,不要在fso根目录操作。
内容的提问来源于stack exchange,提问作者zozo
相关产品推荐
相关产品推荐

