git 详解-问题篇

发布时间:2026/7/31 17:43:28
git 详解-问题篇 git 详解-问题篇平常找开源代码时浏览 github 必不可少可选项偶尔出现无法访问本篇文章简单讲解如何恢复。某些时候需要团队协作明明有代码访问权限但却无法下载代码。提交代码时失败提示仓库不存在。别急跟随博主文章指引一一修复。作者炭烤毛蛋 点击博主了解更多。文章目录git 详解-问题篇1. 无法浏览 github1.1 检查 dns1.2 解决方法2. 已有代码无法下载方案一更新系统凭据管理器最快大概率解决方案二重新生成一个新的 Token如果忘记了或过期了方案三直接在远程地址中嵌入 Token永久解决但需注意保密方案四彻底弃用 HTTPS改用 SSH推荐长期方案3. 上载代码提示无此仓库3.1 请按照顺序操作排查原因第一步检查远程仓库地址最可能的原因第二步验证仓库是否真的存在第三步检查认证权限根据你的连接方式情况 A你用的是 HTTPS 地址以 https:// 开头情况 B你用的是 SSH 地址以 gitgithub.com 开头第四步检查是否是私有仓库权限问题第五步终极确认手动重置3.2 缺少代码仓那就新建代码仓准备工作安装并登录 GitHub CLI核心命令gh repo create场景一创建全新的远程仓库并克隆到本地场景二基于已有的本地项目创建最常用场景三创建带 README 和 .gitignore 的仓库常用选项与参数汇总Tips结语1. 无法浏览 github1.1 检查 dnspinggithub.com PING github.com(127.0.0.1)56(84)bytes of data.64字节来自 localhost(127.0.0.1):icmp_seq1ttl64时间0.026毫秒原因分析域名解析返回错误解析。可以尝试手动修改映射IP即可正常访问。1.2 解决方法Linux 解决方法sudovi/etc/hosts ff02::2 ip6-allrouters 183.14.133.170 github.com# 立即生效配置systemctl restart avahi-daemonWindows修改方法notepad.exe C:\Windows\System32\drivers\etc\hosts 183.14.133.170 github.comTips:IP 可能会发生变化可登陆网站查询ipaddress.com查询后再修改。2. 已有代码无法下载下载 github 自有仓库代码时提示认证失败。remote: Invalid username or token. Password authentication is not supportedforGit operations. fatal: Authentication failedforhttps://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官网重新生成。登录 GitHub - 点击右上角头像 -Settings。左侧最下方点击Developer settings-Personal access tokens-Tokens (classic)。点击Generate new token (classic)。关键设置勾选repo完全控制私有仓库以及workflow权限。如果操作公开仓库至少勾选public_repo。生成后立即复制该Token形如ghp_xxxxxxxxxxxx。使用时注意当Git弹出登录框问你用户名时填你的GitHub用户名问密码时必须粘贴这个Token不要填你的登录密码。方案三直接在远程地址中嵌入 Token永久解决但需注意保密如果你不想每次输入可以直接修改远程地址将Token写入URL注意此操作会使Token明文保存在.git/config中不建议在共享设备上使用gitremote set-url origin https://你的用户名:你的Tokengithub.com/用户名/仓库名.git例如https://zhangsan:ghp_abc123github.com/zhangsan/test.git方案四彻底弃用 HTTPS改用 SSH推荐长期方案如果你觉得Token太麻烦建议切换为SSH密钥一次配置永久免密。生成SSH密钥如果已有则跳过ssh-keygen -t ed25519 -C your_emailexample.com将公钥id_ed25519.pub内容添加到 GitHub - Settings - SSH and GPG keys。修改本地仓库远程地址为SSH格式gitremote set-url origin gitgithub.com:用户名/仓库名.git3. 上载代码提示无此仓库在维护开源项目时首次提交代码会提示未找到仓库。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)重点关注以下三点用户名和仓库名是否拼写正确GitHub 仓库名区分大小写MyRepo和myrepo是完全不同的两个仓库。是否以.git结尾通常 HTTPS 地址必须带.gitSSH 地址也必须带。如果是 HTTPS是否包含个人令牌如果你复制的是浏览器地址栏的网址那是网页地址不是 Git 地址。修正方法如果地址错误使用以下命令修正gitremote set-url origin 正确的仓库地址第二步验证仓库是否真的存在在浏览器中退出登录 GitHub 账号或者使用无痕/隐私模式直接访问https://github.com/用户名/仓库名。如果显示404说明仓库不存在。你需要先在网页上创建好空仓库注意不要勾选 README。如果能正常打开页面说明仓库存在问题出在权限上。第三步检查认证权限根据你的连接方式情况 A你用的是 HTTPS 地址以https://开头GitHub 已于 2021 年禁用了密码登录现在必须使用个人访问令牌 (Personal Access Token)。检查方法执行一次拉取或推送看提示输入密码时你是否输入了令牌而不是你的 GitHub 登录密码gitpush-uorigin main解决方案去 GitHub 右上角头像 -Settings-Developer settings-Personal access tokens-Tokens (classic)。生成一个新令牌必须勾选repo权限。复制令牌只显示一次。回到终端推送时提示输入Username输入你的 GitHub 用户名提示输入Password时粘贴刚才复制的令牌粘贴时屏幕不会显示任何字符直接回车即可。如果想省去每次输入令牌的麻烦可以缓存凭证gitconfig--globalcredential.helper cache或永久存储请谨慎考虑安全性gitconfig--globalcredential.helper store情况 B你用的是 SSH 地址以gitgithub.com开头检查 SSH 连接是否畅通ssh-Tgitgithub.com如果返回Hi 用户名! Youve successfully authenticated...说明 SSH 没问题请检查仓库地址中的用户名是否写错必须是git而不是你的用户名例如gitgithub.com:用户名/仓库名.git。如果返回Permission denied (publickey)说明你的公钥未添加到 GitHub或者密钥不匹配。解决方法查看你的公钥cat ~/.ssh/id_rsa.pub如果没有用ssh-keygen -t rsa生成。复制公钥内容。去 GitHub 右上角头像 -Settings-SSH and GPG keys-New SSH Key粘贴进去保存。再次运行ssh -T gitgithub.com测试。第四步检查是否是私有仓库权限问题如果你尝试克隆或推送的仓库是私有的而你的账号或令牌没有访问权限确保你是仓库的Owner或Collaborator协作者。如果你用的是组织Organization下的仓库检查你是否属于该组织并且组织是否授权了你的 SSH 密钥或令牌。第五步终极确认手动重置如果你不确定到底是哪里错了最快的办法是移除旧的远程地址重新添加一个绝对正确的地址# 1. 删除原来的远程地址gitremote remove origin# 2. 去 GitHub 仓库页面点击绿色的 Code 按钮# 3. 复制正确的地址选 HTTPS 或 SSH# 4. 重新添加gitremoteaddorigin 你复制的地址# 5. 重新尝试推送gitpush-uorigin main提示总结排查清单浏览器无痕模式下能打开该仓库页面不是 404git remote -v显示的地址和浏览器里的 Code 地址完全一致包含大小写HTTPS 用户使用了Token令牌而不是密码SSH 用户执行ssh -T gitgithub.com返回了成功信息Token 或 SSH 密钥包含了repo权限3.2 缺少代码仓那就新建代码仓在 Linux 下使用git命令创建 GitHub 仓库最直接、高效的方式是使用 GitHub 官方命令行工具GitHub CLI (gh)。下面是在 Linux 系统中使用gh的操作流程。准备工作安装并登录 GitHub CLI安装gh根据你的 Linux 发行版使用对应的包管理器进行安装。Debian/Ubuntu:sudoaptupdatesudoaptinstallghArch Linux:sudopacman-Sgithub-cliFedora/RHEL:sudodnfinstallgh其他发行版或手动安装请参考 GitHub CLI 官方安装指南。登录认证安装完成后执行以下命令并按照终端提示在浏览器中完成授权登录。gh auth login核心命令gh repo creategh repo create是创建仓库的核心命令它非常灵活可以适应多种场景。场景一创建全新的远程仓库并克隆到本地这个命令会在 GitHub 上创建一个全新的空仓库并将其自动克隆到当前目录下。# 创建一个名为 my-new-project 的公开仓库并克隆到本地gh repo create my-new-project--public--clone# 创建一个私有仓库gh repo create my-private-project--private--clonemy-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-projectgh会自动使用当前文件夹的名字作为仓库名。场景三创建带 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-repoTips用户名不是邮箱在Git登录提示中Username请填你的GitHub ID而不是注册邮箱。区分 Classic 和 Fine-grained 令牌如果你用的是新版 Fine-grained 令牌请务必确保它授权了当前仓库所在的组织并勾选了Contents读写权限。如果是在 Actions/CI 环境中报错检查环境变量中的GITHUB_TOKEN或PAT是否已过期需在仓库 Settings - Secrets 中更新。如果以上方法都试过仍然报错建议执行git config --system --unset credential.helper清除系统级缓存重启终端后再试。结语不枉博主详细讲解欢迎订阅博主–炭烤毛蛋 。