尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

git 详解-问题篇

git 详解-问题篇
📅 发布时间:2026/7/31 18:02:23

git 详解-问题篇

平常找开源代码时,浏览 github 必不可少可选项,偶尔出现无法访问,本篇文章简单讲解如何恢复。某些时候需要团队协作,明明有代码访问权限,但却无法下载代码。提交代码时失败,提示仓库不存在。别急,跟随博主文章指引一一修复。

作者:炭烤毛蛋 ,点击博主了解更多。


文章目录

  • git 详解-问题篇
  • 1. 无法浏览 github
    • 1.1 检查 dns
    • 1.2 解决方法
  • 2. 已有代码无法下载
    • 方案一:更新系统凭据管理器(最快,大概率解决)
    • 方案二:重新生成一个新的 Token(如果忘记了或过期了)
    • 方案三:直接在远程地址中嵌入 Token(永久解决,但需注意保密)
    • 方案四:彻底弃用 HTTPS,改用 SSH(推荐长期方案)
  • 3. 上载代码提示:无此仓库
    • 3.1 请按照顺序操作排查原因
      • 第一步:检查远程仓库地址(最可能的原因)
      • 第二步:验证仓库是否真的存在
      • 第三步:检查认证权限(根据你的连接方式)
        • 情况 A:你用的是 HTTPS 地址(以 `https://` 开头)
        • 情况 B:你用的是 SSH 地址(以 `git@github.com` 开头)
      • 第四步:检查是否是私有仓库权限问题
      • 第五步:终极确认(手动重置)
    • 3.2 缺少代码仓,那就新建代码仓
      • 准备工作:安装并登录 GitHub CLI
      • 核心命令:`gh repo create`
        • 场景一:创建全新的远程仓库(并克隆到本地)
        • 场景二:基于已有的本地项目创建(最常用)
        • 场景三:创建带 README 和 .gitignore 的仓库
      • 常用选项与参数汇总
  • Tips
  • 结语

1. 无法浏览 github

1.1 检查 dns

pinggithub.com PING github.com(127.0.0.1)56(84)bytes of data.64字节,来自 localhost(127.0.0.1):icmp_seq=1ttl=64时间=0.026毫秒

原因分析:
域名解析返回错误解析。可以尝试手动修改映射IP,即可正常访问。

1.2 解决方法

  • Linux 解决方法:
sudovi/etc/hosts ff02::2 ip6-allrouters +183.14.133.170 github.com# 立即生效配置systemctl restart avahi-daemon
  • Windows修改方法
notepad.exe C:\Windows\System32\drivers\etc\hosts +183.14.133.170 github.com

Tips:IP 可能会发生变化,可登陆网站查询ipaddress.com查询后再修改。

2. 已有代码无法下载

下载 github 自有仓库代码时提示认证失败。

remote: Invalid username or token. Password authentication is not supportedforGit operations. fatal: Authentication failedfor'https://github.com

错误的核心原因很明确:GitHub(以及大多数主流Git平台)已于2021年8月后全面禁止使用“账号密码”进行HTTPS Git操作,必须使用“个人访问令牌(Personal Access Token,简称PAT)”或SSH密钥。

报错Invalid username or token说明:你输入了登录密码(被拒绝),或者你已有的令牌(Token)已过期/权限不足。

针对不同情况,这里有 4 种解决方案(请按顺序排查):

方案一:更新系统凭据管理器(最快,大概率解决)

如果你之前输入过密码,系统会缓存旧密码。即使你现在生成了Token,如果不更新缓存,它依然会发送旧密码导致报错。

  • Windows:打开“控制面板” -> “用户账户” -> “凭据管理器” -> “Windows 凭据”。在“普通凭据”列表中找到git:https://github.com,点击“编辑”,将“密码”框中的旧密码替换为你新生成的Token(注意:这里填Token,不是GitHub登录密码)。
  • macOS:打开“钥匙串访问”,搜索github.com,找到对应的互联网密码条目,双击修改密码为Token。
  • Linux(或通用命令行):直接执行以下命令清除旧缓存,下次推送时会提示你重新输入:
    gitconfig--global--unsetcredential.helper

方案二:重新生成一个新的 Token(如果忘记了或过期了)

如果之前没有Token,或者Token已过期,需要去GitHub官网重新生成。

  1. 登录 GitHub -> 点击右上角头像 ->Settings。
  2. 左侧最下方点击Developer settings->Personal access tokens->Tokens (classic)。
  3. 点击Generate new token (classic)。
  4. 关键设置:勾选repo(完全控制私有仓库)以及workflow权限。如果操作公开仓库,至少勾选public_repo。
  5. 生成后立即复制该Token(形如ghp_xxxxxxxxxxxx)。

使用时注意:
当Git弹出登录框问你用户名时,填你的GitHub用户名;问密码时,必须粘贴这个Token(不要填你的登录密码)。

方案三:直接在远程地址中嵌入 Token(永久解决,但需注意保密)

如果你不想每次输入,可以直接修改远程地址,将Token写入URL(注意:此操作会使Token明文保存在.git/config中,不建议在共享设备上使用):

gitremote set-url origin https://<你的用户名>:<你的Token>@github.com/<用户名>/<仓库名>.git

例如:https://zhangsan:ghp_abc123@github.com/zhangsan/test.git

方案四:彻底弃用 HTTPS,改用 SSH(推荐长期方案)

如果你觉得Token太麻烦,建议切换为SSH密钥,一次配置永久免密。

  1. 生成SSH密钥(如果已有则跳过):ssh-keygen -t ed25519 -C "your_email@example.com"
  2. 将公钥(id_ed25519.pub)内容添加到 GitHub -> Settings -> SSH and GPG keys。
  3. 修改本地仓库远程地址为SSH格式:
    gitremote set-url origin git@github.com:<用户名>/<仓库名>.git

3. 上载代码提示:无此仓库

在维护开源项目时,首次提交代码会提示未找到仓库。

ERROR: Repository not found. fatal: Could notreadfrom remote repository. Pleasemakesure you have the correct access rights and the repository exists.

错误是 Git 与 GitHub 交互时最经典的问题之一。别担心,按以下步骤逐一排查,通常 5 分钟内就能解决。

根本原因逃不出这四种情况:URL 写错了、没有权限(认证失败)、仓库不存在,或者大小写写错了。

3.1 请按照顺序操作排查原因

第一步:检查远程仓库地址(最可能的原因)

首先确认你本地关联的地址是否正确。

gitremote-v

你会看到类似这样的输出:

origin https://github.com/用户名/仓库名.git (fetch) origin https://github.com/用户名/仓库名.git (push)

重点关注以下三点:

  1. 用户名和仓库名是否拼写正确(GitHub 仓库名区分大小写,MyRepo和myrepo是完全不同的两个仓库)。
  2. 是否以.git结尾(通常 HTTPS 地址必须带.git,SSH 地址也必须带)。
  3. 如果是 HTTPS,是否包含个人令牌(如果你复制的是浏览器地址栏的网址,那是网页地址,不是 Git 地址)。

修正方法:如果地址错误,使用以下命令修正:

gitremote set-url origin 正确的仓库地址

第二步:验证仓库是否真的存在

在浏览器中退出登录 GitHub 账号(或者使用无痕/隐私模式),直接访问https://github.com/用户名/仓库名。

  • 如果显示404,说明仓库不存在。你需要先在网页上创建好空仓库(注意不要勾选 README)。
  • 如果能正常打开页面,说明仓库存在,问题出在权限上。

第三步:检查认证权限(根据你的连接方式)

情况 A:你用的是 HTTPS 地址(以https://开头)

GitHub 已于 2021 年禁用了密码登录,现在必须使用个人访问令牌 (Personal Access Token)。

检查方法:执行一次拉取或推送,看提示输入密码时,你是否输入了令牌(而不是你的 GitHub 登录密码)?

gitpush-uorigin main

解决方案:

  1. 去 GitHub 右上角头像 ->Settings->Developer settings->Personal access tokens->Tokens (classic)。
  2. 生成一个新令牌,必须勾选repo权限。
  3. 复制令牌(只显示一次)。
  4. 回到终端,推送时提示输入Username输入你的 GitHub 用户名,提示输入Password时粘贴刚才复制的令牌(粘贴时屏幕不会显示任何字符,直接回车即可)。

如果想省去每次输入令牌的麻烦,可以缓存凭证:

gitconfig--globalcredential.helper cache

或永久存储(请谨慎考虑安全性):

gitconfig--globalcredential.helper store
情况 B:你用的是 SSH 地址(以git@github.com开头)

检查 SSH 连接是否畅通:

ssh-Tgit@github.com
  • 如果返回Hi 用户名! You've successfully authenticated...,说明 SSH 没问题,请检查仓库地址中的用户名是否写错(必须是git,而不是你的用户名,例如git@github.com:用户名/仓库名.git)。

  • 如果返回Permission denied (publickey),说明你的公钥未添加到 GitHub,或者密钥不匹配。
    解决方法:

    1. 查看你的公钥:cat ~/.ssh/id_rsa.pub(如果没有,用ssh-keygen -t rsa生成)。
    2. 复制公钥内容。
    3. 去 GitHub 右上角头像 ->Settings->SSH and GPG keys->New SSH Key,粘贴进去保存。
    4. 再次运行ssh -T git@github.com测试。

第四步:检查是否是私有仓库权限问题

如果你尝试克隆或推送的仓库是私有的,而你的账号(或令牌)没有访问权限:

  • 确保你是仓库的Owner或Collaborator(协作者)。
  • 如果你用的是组织(Organization)下的仓库,检查你是否属于该组织,并且组织是否授权了你的 SSH 密钥或令牌。

第五步:终极确认(手动重置)

如果你不确定到底是哪里错了,最快的办法是移除旧的远程地址,重新添加一个绝对正确的地址:

# 1. 删除原来的远程地址gitremote remove origin# 2. 去 GitHub 仓库页面,点击绿色的 "Code" 按钮# 3. 复制正确的地址(选 HTTPS 或 SSH)# 4. 重新添加gitremoteaddorigin 你复制的地址# 5. 重新尝试推送gitpush-uorigin main

提示:总结排查清单

  • 浏览器无痕模式下能打开该仓库页面(不是 404)
  • git remote -v显示的地址和浏览器里的 Code 地址完全一致(包含大小写)
  • HTTPS 用户使用了Token(令牌)而不是密码
  • SSH 用户执行ssh -T git@github.com返回了成功信息
  • Token 或 SSH 密钥包含了repo权限

3.2 缺少代码仓,那就新建代码仓

在 Linux 下使用git命令创建 GitHub 仓库,最直接、高效的方式是使用 GitHub 官方命令行工具GitHub CLI (gh)。
下面是在 Linux 系统中使用gh的操作流程。

准备工作:安装并登录 GitHub CLI

  1. 安装gh
    根据你的 Linux 发行版,使用对应的包管理器进行安装。

    • Debian/Ubuntu:
      sudoaptupdatesudoaptinstallgh
    • Arch Linux:
      sudopacman-Sgithub-cli
    • Fedora/RHEL:
      sudodnfinstallgh
    • 其他发行版或手动安装,请参考 GitHub CLI 官方安装指南。
  2. 登录认证
    安装完成后,执行以下命令,并按照终端提示,在浏览器中完成授权登录。

    gh auth login

核心命令:gh repo create

gh repo create是创建仓库的核心命令,它非常灵活,可以适应多种场景。

场景一:创建全新的远程仓库(并克隆到本地)

这个命令会在 GitHub 上创建一个全新的空仓库,并将其自动克隆到当前目录下。

# 创建一个名为 my-new-project 的公开仓库,并克隆到本地gh repo create my-new-project--public--clone# 创建一个私有仓库gh repo create my-private-project--private--clone
  • my-new-project是你的仓库名称。
  • 如果不指定--public或--private,命令会进入交互模式,引导你完成创建。
  • 如果省略OWNER/部分(如my-org/my-project),仓库默认创建在你的个人账户下。
场景二:基于已有的本地项目创建(最常用)

这是最实用的工作流,适合你已经在本地写好了代码,现在想把它推送到 GitHub。

# 进入你的项目目录cd/path/to/your/local-project# 执行命令,将当前目录(.)作为源,创建远程仓库并推送所有代码gh repo create my-project--private--source=.--push
  • --source=.表示将当前目录作为本地仓库的源。
  • --push会将本地的所有提交推送到新创建的远程仓库。
  • 如果省略仓库名称my-project,gh会自动使用当前文件夹的名字作为仓库名。
场景三:创建带 README 和 .gitignore 的仓库

你可以一次性为仓库添加描述、开源许可证、.gitignore文件和README.md。

gh repo create my-awesome-app\--public\--description"我的第一个应用"\--licensemit\--gitignoreNode\--add-readme\--clone
  • -d, --description:添加仓库描述。
  • -l, --license:添加开源许可证,如mit,apache-2.0,gpl-3.0等。
  • -g, --gitignore:根据语言或平台生成.gitignore文件,例如Node,Python,Go等。
  • --add-readme:自动创建一个README.md文件。

常用选项与参数汇总

参数说明示例
--public/--private/--internal必选其一,设置仓库的可见性。--public
-d, --description <string>为仓库添加描述。-d "我的项目"
--add-readme自动添加一个README.md文件。--add-readme
-g, --gitignore <string>根据模板添加.gitignore文件。-g Node
-l, --license <string>添加开源许可证。-l mit
-c, --clone创建后自动将仓库克隆到本地。--clone
-s, --source <path>指定本地已有仓库的路径。--source .
--push创建后,将本地提交推送到远程仓库。--push
-p, --template <repository>基于一个模板仓库来创建新仓库。-p my-template-repo

Tips

  • 用户名不是邮箱:在Git登录提示中,Username请填你的GitHub ID,而不是注册邮箱。
  • 区分 Classic 和 Fine-grained 令牌:如果你用的是新版 Fine-grained 令牌,请务必确保它授权了当前仓库所在的组织,并勾选了Contents读写权限。
  • 如果是在 Actions/CI 环境中报错:检查环境变量中的GITHUB_TOKEN或PAT是否已过期,需在仓库 Settings -> Secrets 中更新。

如果以上方法都试过仍然报错,建议执行git config --system --unset credential.helper清除系统级缓存,重启终端后再试。

结语

不枉博主详细讲解,欢迎订阅博主–炭烤毛蛋 。

相关新闻

  • 解密高效Java字节码分析:CFR反编译工具专业指南
  • Windows上直接运行安卓应用的终极指南:APK安装器完全教程
  • 【AI减负实战指南】:20年IT老兵亲授5大高频重复场景的自动化落地路径

最新新闻

  • 广电AI算力困局破局方案(NVIDIA A10+国产昇腾双栈部署实测:推理吞吐提升3.8倍,成本下降52%)
  • FFmpegFreeUI:Windows上最强大的视频转码图形界面工具终极指南
  • Pvc材料、汽车内饰、鞋面、振动刀、针织面料、复合面料电脑下料机公司推荐,哪家好一看便知! - 产品推荐官
  • LLAMA Factory: 简洁高效的大语言模型训练平台
  • 【面向对象】UML结构图:类图(类的关系:依赖/关联/聚合/组合/泛化/实现)
  • PiliPlus:跨平台B站客户端终极指南 - 5大平台一致的纯净体验

日新闻

  • 7步掌握KMS智能激活工具:Windows和Office永久激活完整方案
  • 如何在Windows上运行iOS应用:ipasim跨平台模拟器终极指南
  • 2026年重庆工伤赔偿律师口碑推荐:洪家木律师用专业赢得信赖 - 本地品牌推荐

周新闻

  • 大连理工大学与东京大学联手打造的“主动型AI助手“
  • 170.2026年国家级科研瓶颈:超精密单点金刚石切削(SPDT)光学表面生成
  • SongBloom:革命性歌曲生成框架深度解析——如何通过交织自回归与扩散模型创作完整音乐

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号