多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

第9章:提交项目到GitHub

第9章:提交项目到GitHub 第9章提交项目到GitHub本章目标完整走一遍把项目提交到 GitHub 远程仓库的流程包括 GitHub 特有的Personal Access TokenPAT认证、代理配置、以及命令行 / TortoiseGit 两套操作。与 第8章提交项目到Gitee 对照学习差异部分重点标注。1. GitHub 与 Gitee 的差异点对比项GiteeGitHub访问速度国内快国内可能不稳定需要代理界面语言中文英文有浏览器翻译HTTPS 密码认证支持账号密码不支持必须用 Token默认分支通常为 master可在设置中修改main建库界面中文引导英文引导开源生态国内项目多全球开源项目、学习资源最全[!warning] 记住最大区别GitHub 从 2021 年 8 月起不再支持用账号密码进行 Git 操作HTTPS 方式必须使用Personal Access TokenSSH 方式不受影响。所以强烈建议配置 SSH。2. 准备工作2.1 注册 GitHub 账号打开 https://github.com/点击Sign up填写邮箱、密码、用户名完成邮箱验证记下你的用户名仓库地址里要用2.2 配置 SSH 公钥强烈推荐生成密钥若已为 Gitee 生成过可以复用同一把也可以单独生成# 复用已有密钥直接复制公钥cat~/.ssh/id_rsa.pub# 或不影响现有密钥为 GitHub 单独生成一把ssh-keygen-ted25519-f~/.ssh/id_ed25519_github-Cyouexample.com添加公钥到 GitHub头像 → Settings → SSH and GPG keys → New SSH keyTitle随便写如 “家里台式机”Key typeAuthentication KeyKey粘贴ssh-rsa AAA...或ssh-ed25519 AAA...全文测试ssh-Tgitgithub.com# 成功Hi username! Youve successfully authenticated...[!tip] 22 端口被屏蔽公司/学校网络可能封 22 端口用 443 端口测试ssh-T-p443gitssh.github.com若成功在~/.ssh/config中配置Host github.com Hostname ssh.github.com Port 443 User git2.3 网络访问问题国内环境如果无法访问 github.com 或推送特别慢可以把 HTTPS 代理配置给 Git# 设置代理端口按你本地代理软件实际情况修改如 7890、10809 等gitconfig--globalhttp.proxy http://127.0.0.1:7890gitconfig--globalhttps.proxy http://127.0.0.1:7890# 取消代理gitconfig--global--unsethttp.proxygitconfig--global--unsethttps.proxy# 只对 GitHub 走代理推荐避免影响 Giteegitconfig--globalhttp.https://github.com.proxy http://127.0.0.1:7890[!note] SSH 的代理上面的配置只作用于 HTTPS。SSH 推送需要代理时通常在~/.ssh/config里配置ProxyCommand或让代理软件开启全局/TUN 模式。3. 在 GitHub 上创建远程仓库登录 GitHub → 右上角「」→ New repository填写项填写建议Repository name英文名如c-learning-notesDescription可选一句话介绍Public / Private想展示就 Public含隐私就 PrivateAdd a README file不勾本地已有代码时Add .gitignoreNone本地已有或随后自建Choose a license可选开源项目建议 MIT点击Create repository→ 得到地址HTTPShttps://github.com/你的用户名/c-learning-notes.git SSH gitgithub.com:你的用户名/c-learning-notes.git4. 方式一命令行完成提交4.1 完整步骤SSH 方式# 1. 进入项目目录 cd/d/my-c-project# 2. 初始化本地仓库 gitinit# 3. 创建 .gitignore排除编译产物# 内容参考第3章模板# 4. 提交到本地仓库 gitadd.gitcommit-mfirst commit: 初始化项目# 5. 确保分支名为 main gitbranch-Mmain# 6. 关联远程仓库 gitremoteaddorigin gitgithub.com:你的用户名/c-learning-notes.git# 7. 首次推送 gitpush-uorigin main4.2 HTTPS Token 方式不用 SSH 时第一步生成 Personal Access TokenGitHub → 头像 →Settings→ 左下角Developer settingsPersonal access tokens → Tokens (classic) → Generate new token (classic)填写Note如 “Windows 电脑推送”Expiration有效期可自定义过期需重新生成Scopes至少勾选repo完整仓库读写权限点Generate token→立即复制并妥善保存页面关闭后无法再看到第二步用 Token 推送gitremoteaddorigin https://github.com/你的用户名/c-learning-notes.gitgitpush-uorigin main# 弹出认证窗口时# 用户名你的 GitHub 用户名# 密码粘贴刚才的 Token不是账号密码[!warning] Token 保管Token 等同密码权限不要写入代码、不要提交到仓库、不要截图发人。泄露了立即去页面 Revoke撤销后重新生成。4.3 验证与日常开发gitremote-v# 查看关联gitlog--oneline-3# 查看提交# 日常三步gitadd.gitcommit-mfeat: 新增功能gitpush刷新 GitHub 仓库页面即可看到代码和提交历史。5. 方式二TortoiseGit 完成提交流程与 Gitee 完全一致参见 [第8章提交项目到Gitee#5. 方式二TortoiseGit 完成提交图形化差异只在远程地址和认证5.1 步骤在项目文件夹右键 →Git 在此创建版本库Git Create repository here创建.gitignore→Git 提交Commit填信息提交右键 →Git 同步Git Sync…首次需要设置远程仓库点 Push 旁边下拉 →管理远程仓库Manage remotes/ 设置新建远程名称originURL 填gitgithub.com:你的用户名/c-learning-notes.git点Pull可选首次空仓库无内容→ 点PushSSH 首次连接确认指纹 → 完成5.2 HTTPS 场景TortoiseGit TokenURL 填https://github.com/你的用户名/c-learning-notes.git推送时弹出登录框用户名GitHub 用户名密码粘贴Token勾选保存后Windows 凭据管理器会记住[!warning] 认证失败最常见原因密码栏填了账号密码而不是 Token → 认证失败Token 过期或被撤销 → 重新生成Token 权限不含repo→ 推送被拒换账号后没清理旧凭据 → 控制面板 → 凭据管理器 → 删除git:https://github.com6. 常见报错速查GitHub 篇报错原因解决Authentication failed密码填错 / 用了账号密码使用 Token或改 SSHremote: Support for password authentication was removedGitHub 不再支持密码改用 Token / SSHPermission denied (publickey)SSH 公钥未配置/配置错账号ssh -T gitgithub.com测试检查公钥Connection timed out/ 推送卡住网络无法直连配置代理见 2.3fatal: unable to access... Could not resolve hostDNS 污染/断网检查网络、代理设置non-fast-forward远程有本地没有的提交git pull --rebase后再 pushrefusing to merge unrelated histories建库时勾了 READMEgit pull --allow-unrelated-histories后处理File is 123.45 MB; this exceeds GitHubs file size limit of 100.00 MB提交了大文件移除大文件或改用 Git LFS更多通用问题见 第10章常见问题与避坑指南。7. 一个项目同时推送到 Gitee 和 GitHub进阶一个本地仓库可以关联多个远程仓库实现双备份# 关联两个远程gitremoteaddorigin gitgitee.com:你的用户名/repo.gitgitremoteaddgithub gitgithub.com:你的用户名/repo.git# 分别推送gitpush origin main# 推 Giteegitpush github main# 推 GitHub# 或者给 origin 配置多个 push 地址一条命令同时推两个gitremote set-url--add--pushorigin gitgitee.com:你的用户名/repo.gitgitremote set-url--add--pushorigin gitgithub.com:你的用户名/repo.gitgitpush origin main# 一次推送同时更新两个平台TortoiseGit 中则是设置 → Git → 远程 → 新建第二个远程如github推送时在 Sync 窗口选择目标远程即可。8. 完整命令速抄新手可直接复制# 在项目根目录打开 Git Bash逐行执行gitinitgitadd.gitcommit-mfirst commit: 初始化项目gitbranch-Mmaingitremoteaddorigin gitgithub.com:你的用户名/仓库名.gitgitpush-uorigin main9. 本章小结GitHub 流程主线与 Gitee 相同注册 → 配 SSH → init → add → commit → remote add → push -u两大特有坑HTTPS 必须用 Token、国内网络需配代理建库时不勾 README/.gitignore避免首推冲突一个本地仓库可加多个远程实现 Gitee GitHub 双备份出错先对照报错表再查 第10章常见问题与避坑指南
返回列表