You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git本地存在提交但无法推送到远程,状态显示工作区干净的解决方法

问题描述

在使用SourceTree时遇到仓库实际存在但无法被识别的问题,尝试通过以下命令修复:

git remote rm origin

git remote add origin 
https://GITHUB_USERNAME:PERSONAL_ACCESS_TOKEN@github.com/GITHUB_USERNAME/REPO_NAME.git

执行后出现以下异常:

  • master分支旁标注可推送的“1”消失,多次推送都无法将本地最新提交同步到GitHub
  • 执行git status返回工作区干净,但git log能看到本地确实存在该最新提交
  • 已排除.gitignore影响,且执行上述命令前变更原本处于可推送状态
  • 尝试git update-index --really-refresh、删除.git/index再git reset均无效
  • 切换回SSH地址git@github.com:myuser/myrepo.git后,仍出现仓库找不到的错误
解决方案

1. 检查本地分支与远程分支的关联状态

首先确认本地master分支是否和远程的origin/master建立了跟踪关系,执行:

git branch -vv

如果输出里master分支后面没有显示origin/master相关的跟踪信息,说明关联丢失,执行以下命令重新关联:

git branch --set-upstream-to=origin/master master

关联完成后再执行git push尝试推送。

2. 验证远程仓库URL的正确性

执行git remote -v查看当前origin的URL,检查:

  • 用户名、仓库名是否拼写正确
  • HTTPS地址中的Personal Access Token是否有效(可重新生成带repo权限的token,再更新URL)
    更新URL的命令:
git remote set-url origin https://GITHUB_USERNAME:NEW_TOKEN@github.com/GITHUB_USERNAME/REPO_NAME.git

如果用SSH地址,检查本地SSH密钥是否已添加到GitHub账户:

  • 生成密钥(如果没有):ssh-keygen -t ed25519 -C "your_email@example.com"
  • 复制公钥内容:cat ~/.ssh/id_ed25519.pub,粘贴到GitHub的SSH密钥设置中

3. 确认远程分支名称是否匹配

现在GitHub默认分支名是main而非master,如果远程分支是main,本地还是master会导致推送失败:

  • 拉取远程分支信息:git fetch origin
  • 查看远程分支:git branch -r
    如果远程是main,执行以下命令调整:
git branch -m master main  # 本地分支重命名为main
git branch --set-upstream-to=origin/main main
git push

4. 强制推送(谨慎使用)

如果确认本地提交是最新的,且上述步骤无效,可尝试强制推送(会覆盖远程分支,避免多人协作时使用):

git push -f origin master

5. 修复SourceTree识别问题

Git层面问题解决后,重启SourceTree,或者通过「添加仓库」选择本地仓库路径,重新加载即可识别。

内容的提问来源于stack exchange,提问作者eComEvo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 16:34:58