使用 GitHub
本教程共 26 篇 · 第 14 篇 · 更新于 2026-07-29 · 约 8 分钟阅读
14. 使用 GitHub
本节目标:了解 GitHub 是什么,学会配置 SSH 密钥实现免密推送,能描述 Pull Request 在协作中的位置。
Git 是工具,GitHub 是平台。工具管版本,平台管协作。学会了 Git 命令,再摸熟 GitHub,你才算真正进入了开源世界的大门。
GitHub 是什么
GitHub 是全球最大的 Git 仓库托管平台。它干了三件事:
- 帮你远程存储代码仓库。
- 提供 Web 界面浏览代码、提交历史、Issues。
- 用 Pull Request 机制让多人协作变得有迹可循。
对新手来说,它最大的价值是:免费的远程仓库。注册账号,你就有了一个”云端硬盘”。
注册账号
打开 github.com,用邮箱注册。用户名会成为你所有仓库 URL 的一部分,想清楚再填。
验证邮箱后,点右上角头像进入 Settings,把基本资料填一填。
创建仓库
登录后点右上角的 ”+” → “New repository”。
填几个关键项:
- Repository name:仓库名,比如
my-project。 - Visibility:Public(公开)或 Private(私有)。公开仓库任何人都能看。
其它选项:Add a README、.gitignore、license,新手可以先都不勾,空仓库方便练习。
创建完成后,GitHub 会给你仓库的 HTTPS 或 SSH 地址:
https://github.com/yourname/my-project.git
git@github.com:yourname/my-project.git
把本地仓库推到 GitHub
假设本地已经有一个仓库了:
git remote add origin git@github.com:yourname/my-project.git
git branch -M main
git push -u origin main
三步走:关联远程、确保主分支叫 main、推送并建立跟踪。
如果是 GitHub 上先建好仓库、本地还没有,就先 clone:
git clone git@github.com:yourname/my-project.git
cd my-project
SSH 密钥配置
HTTPS 每次 push 都要输密码很烦。SSH 配一次,终身免密。
第一步:生成密钥
打开 Git Bash(Windows)或终端,运行:
ssh-keygen -t ed25519 -C "your_email@example.com"
如果系统不支持 ed25519,用 rsa:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
一路回车,使用默认路径和空密码。
生成后,~/.ssh/ 目录下会有两个文件:
id_ed25519(或id_rsa):私钥,不能给别人看。id_ed25519.pub(或id_rsa.pub):公钥,可以贴到 GitHub。
第二步:把公钥贴到 GitHub
cat ~/.ssh/id_ed25519.pub
复制输出。
进入 GitHub → Settings → SSH and GPG keys → New SSH key。
Title 随便填(比如”公司笔记本”),Key 框里粘贴公钥内容,保存。
第三步:测试连通性
ssh -T git@github.com
首次连接会提示确认 host 指纹,输入 yes。成功的话看到:
Hi yourname! You've successfully authenticated, but GitHub does not provide shell access.
这就说明 SSH 配好了。以后所有 git@github.com:... 的地址都能免密操作。
Warning私钥文件(没有
.pub后缀的那个)绝对不要上传到任何平台或发给任何人。公钥可以随便分享。
多个 SSH 密钥怎么办
工作和生活两台电脑,各自有一对密钥。在 ~/.ssh/ 下建一个 config 文件:
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
用的时候把 remote 地址里的 git@github.com 换成配置的 Host 名即可。
从 GitHub 克隆
公开仓库直接 clone:
git clone https://github.com/torvalds/linux.git
或 SSH 方式(推代码必须用 SSH):
git clone git@github.com:torvalds/linux.git
-o 可以指定远程仓库的默认名字:
git clone -o upstream git@github.com:torvalds/linux.git
推送到 GitHub
git push origin main
HTTPS 第一次 push 会弹登录窗口。SSH 配好后不会。
如果想把本地分支推送到不同名的远程分支:
git push origin local-branch:remote-branch
Fork 与 Pull Request 概念
这一节只讲概念,不实战。知道这三步流程就够了。
Fork
在 GitHub 上点仓库的 “Fork” 按钮,对方仓库会完整复制到你自己的账号下。你有完全的读写权限。
Clone → 改 → Push
把 fork 下来的仓库 clone 到本地,切分支、改代码、提交、推送到你的 fork。
Pull Request(PR)
在你的 fork 页面点 “New pull request”,选分支、写说明、提交。
PR 是告诉原仓库维护者:“我改了点东西,你看看要不要合进来。”
对方可以评论、请求修改。你继续往 fork 上推提交,PR 会自动更新。
维护者满意后,点 “Merge pull request”,你的代码就进入原仓库了。
GitHub 协作关系图
原仓库 (upstream)
│
│ Fork
▼
你的 GitHub 账号下的副本 (origin)
│
│ Clone
▼
本地仓库
│
│ Push
▼
你的 GitHub 副本 (origin)
│
│ Pull Request
▼
原仓库 (upstream)
本地 origin 指向你的 fork,手动再加一个 upstream 指向原仓库:
git remote add upstream https://github.com/origin/repo.git
定期从 upstream 拉最新代码保持同步:
git fetch upstream
git switch main
git merge upstream/main
使用 GitHub 的几个小建议
- 仓库描述写清楚,README 好好写,这是项目的脸面。
- 敏感信息(密钥、密码、token)不要提交到仓库。
.gitignore提前配好,别把node_modules之类的大户推上去。- 善用 Issues 和 Discussions 记录问题和讨论。
本章小卡片
| 概念 | 说明 |
|---|---|
| SSH 密钥 | 公钥贴 GitHub,私钥留本地,实现免密推送 |
| Fork | 把别人的仓库复制到你账号下 |
| PR | 请求对方合并你的提交 |
| origin | 默认指向你 fork 的仓库 |
| upstream | 习惯上指向原始上游仓库 |
Note公开仓库任何人都能看。公司项目、个人敏感代码,记得选 Private 或者自建 GitLab。