01 入门篇 · GitHub 世界观
从零认知 GitHub——它的定位、历史、生态和竞争对手,帮你建立完整的知识框架。
1.1 GitHub 全景认知
1.2 GitHub 的历史与重要里程碑
| 时间 | 事件 | 意义 |
|---|---|---|
| 2005 | Linus Torvalds 创建 Git | Linux 内核需要更好的版本控制工具 |
| 2008.02 | GitHub 上线 | Tom Preston-Werner 等三人创建 |
| 2011 | 用户突破 100 万 | 成为全球最大代码托管平台 |
| 2015 | GitHub Enterprise 发布 | 企业自托管部署方案 |
| 2018.06 | 微软以 75 亿美元收购 | 开源社区热议,最终证明是利好 |
| 2019.01 | 私有仓库免费(无限量) | GitHub 盈利模式转向企业服务 |
| 2019.11 | Actions 正式发布 | 内置 CI/CD 替代第三方 |
| 2020.07 | 存档到北极 | 开源代码存入 Arctic Code Vault |
| 2021.06 | Copilot 预览 | AI 编程助手震撼开发者社区 |
| 2023 | 用户突破 1 亿 | 全球四分之一开发者使用 |
| 2024 | Copilot Chat/Workspace | AI 全面融入开发流程 |
1.3 Git vs GitHub 完整对比
| 维度 | Git | GitHub |
|---|---|---|
| 类型 | 版本控制工具(命令行) | 代码托管平台(网站/SaaS) |
| 开发者 | Linus Torvalds | GitHub Inc.(微软子公司) |
| 首版 | 2005 年 | 2008 年 |
| 离线使用 | ✅ 完全离线 | ❌ 需要网络 |
| 类比 | 发动机 | 整车(发动机+车身+导航+娱乐) |
1.4 主要代码托管平台对比
| 功能 | GitHub | GitLab | Bitbucket | Gitee |
|---|---|---|---|---|
| 免费私有仓库 | ✅ 无限 | ✅ 无限 | ✅ 5人 | ✅ 无限 |
| CI/CD 额度 | 2000min/月 | 400min/月 | 50min/月 | 有限 |
| Pages 建站 | ✅ 免费+自定义域名 | ✅ | ❌ | ✅ |
| 开源生态 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
| 中国访问 | ⚠️ 不稳定 | ⚠️ 不稳定 | ⚠️ 不稳定 | ✅ 极快 |
1.5 注册与初始化设置
注册账号
访问 github.com → Sign up。用户名用小写英文+数字+连字符。推荐 Gmail 注册。
完善个人主页
Settings → Profile。设置头像(真人头像提高 PR 通过率30%)、Name、Bio(160字简介)、URL、Company/Location。
两步验证 2FA
Settings → Password and authentication → Two-factor authentication。推荐 Authenticator App(Google/Microsoft/Authy)。2023年起 GitHub 要求所有上传代码的用户启用 2FA!
SSH 密钥配置
ssh-keygen -t ed25519 -C "your@email.com"
eval "$(ssh-agent -s)" && ssh-add ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub # 复制添加到 GitHubGit 本地配置
git config --global user.name "用户名"
git config --global user.email "邮箱"
git config --global init.defaultBranch main
git config --global pull.rebase true1.6 GitHub 界面全面导航
Dashboard 仪表盘
登录首页。左侧:关注的人/仓库活动。右侧:你的顶级仓库和最近活动。
Profile 个人主页
github.com/用户名。头像+简介+贡献图+Pinned 仓库+活动时间线。
贡献图
绿色方块矩阵——每天一个方块。颜色越深提交越多。连续天数 = Streak。
Stars 页面
github.com/stars/用户名。你 Star 过的仓库,可按语言排序搜索——很多人不知道!
1.7 通知系统
通知类型
被@提及、PR/Issue 被回复、PR 被合并关闭、Watch 的仓库动态。
通知渠道
Web(右上角铃铛)+ Email + 移动端推送。可设置每周摘要。
管理通知
Unwatch 仓库、设置 Participating only、Mute 特定 Issue/PR。
02 核心概念 · 搞懂这些词你就是老手
GitHub 有自己的术语体系。每个概念覆盖定义、用法、最佳实践、常见错误。
2.1 仓库(Repository)完全详解
公开 Public
全世界可见、可克隆、可 Fork。开源项目用。免费。
私有 Private
仅你和协作者可见。商业/未完成项目用。免费无限制。
组织 Organization
仓库可属于个人或组织。组织可设团队权限。
模板 Template
设为模板后,别人可一键创建同样结构的项目。
2.2 README + GitHub Flavored Markdown
GitHub Flavored Markdown(GFM)特有语法:- [x] 任务列表、|表格|、@用户名、#123 引用 Issue、```mermaid 图表、:emoji: 表情。
2.3 Issue — 从提报到闭环
标签 Labels
bugenhancementhelp wantedgood first issuequestion
指派 Assignees
把 Issue 分配给特定人处理。可多人。
里程碑 Milestones
把 Issue 归类到版本规划(如 v1.0)。
Issue 模板
.github/ISSUE_TEMPLATE/ 中放模板 md 文件,自动加载。支持 YAML 表单。
自动关闭
PR 描述写 Closes #123 / Fixes #456,合并时自动关闭。
Task List
正文中 - [x] 任务列表,可关联子 Issue。
2.4 Pull Request 深度拆解
三种 Merge 方式:Merge Commit(保留所有历史)/Squash and Merge(压缩成一个提交)/Rebase and Merge(线性历史)。
PR 标题规范:feat: 新功能、fix: Bug修复、docs: 文档、refactor: 重构、test: 测试、chore: 杂项。
最佳实践:一个 PR 只做一件事、小于 400 行改动、关联 Issue、运行测试通过后请求 Review。
2.5 Fork / Star / Watch
| 功能 | 做了什么 | 取消方式 |
|---|---|---|
| Star ⭐ | 收藏到个人 Stars 列表,点赞 | 再次点击取消 |
| Fork 🍴 | 在自己账号下创建副本 | 手动删除 Fork 仓库 |
| Watch 👁 | 订阅仓库动态通知 | 改变级别/Unwatch |
Watch 三种模式:Participating(只参与的被通知)、All Activity(全部通知)、Ignore(静音)。
2.6 开源许可证对比
| 许可证 | 商用 | 修改 | 须开源 | 须署名 |
|---|---|---|---|---|
| MIT | ✅ | ✅ | ❌ | ✅ |
| Apache 2.0 | ✅ | ✅ | ❌ | ✅ |
| GPL v3 | ✅ | ✅ | ✅ | ✅ |
| BSD 3 | ✅ | ✅ | ❌ | ✅ |
2.7 .gitignore 指南
必须忽略的文件:密钥(.env)、依赖包(node_modules/ vendor/)、IDE设置(.idea/ .vscode/)、构建产物(dist/ build/)、日志(*.log)、系统文件(.DS_Store Thumbs.db)。
2.8 Discussions vs Issues
| 功能 | Issues | Discussions |
|---|---|---|
| 用途 | Bug/功能请求/任务 | 问答/想法/社区展示 |
| 分类 | Labels 标签 | Categories 分类 |
| 投票 | ❌ | ✅ |
| 可转 Issue | 本身就是 | ✅ 一键转换 |
2.9 Projects 看板
两种视图:Table(类似Excel)和 Board(类似Trello)。支持自定义字段、跨仓库管理。内置 Workflows 自动化:PR 合并后自动移到 Done。
2.10 Wiki
简化的维基系统。支持 Markdown、侧边栏导航、版本历史(本身也是 Git 仓库)。适合社区协作编辑的文档。
03 仓库深度 · 每一个角落都值得研究
一个 GitHub 仓库页面藏着几十个功能入口。
3.1 仓库页面结构
顶栏:Code/Issues/PRs/Projects/Wiki/Security/Insights/Settings。文件列表:文件夹+文件+大小+最后提交。右侧:⭐🍴👁统计+Topics+License+语言构成+贡献者。
3.2 代码浏览技巧
按 t 搜索文件
仓库页面按 t 键弹文件搜索框。
跳转到行
按 # 显示行号,Shift+# 跳转。URL #L10-L20 表示第10-20行。
永久链接
按 y 键,URL 变为含 Commit SHA 的永久链接。
History
查看文件所有历史修改记录。
3.4 Commit 规范
约定式提交:类型(作用域): 描述。常用类型:feat/fix/docs/style/refactor/perf/test/chore/ci/build。
每个 Commit 只做一件事!
3.5 Compare & Blame
Compare URL:/compare/分支A...分支B。Blame:逐行显示谁什么时候写的——追溯代码来源。Patch/Diff 后缀获得补丁文件。
3.6 Insights 统计
Contributors
按提交次数排名的贡献者。
Commits
提交频率柱状图。
Code Frequency
每周代码增减对比。
Network
分支网络 DAG 图。
Pulse
项目活跃摘要。
Traffic
访客数+页面浏览量(仅公开)。
3.7 安全 Tab
Dependabot Alerts
自动扫描依赖漏洞。
Dependabot Updates
漏洞自动创建修复 PR。
CodeQL
语义代码安全分析。
Secret Scanning
自动检测提交中的密钥。
04 操作实战
覆盖从创建仓库到高级 Git 操作的全链路。
4.1 创建仓库
Web:点击 ➕→New repository。CLI:gh repo create 仓库名 --public --add-readme。
4.2 Git 命令速查
| 操作 | 命令 |
|---|---|
| 克隆 | git clone url |
| 查看状态 | git status |
| 添加文件 | git add . |
| 提交 | git commit -m "信息" |
| 查看历史 | git log --oneline --graph |
| 推送 | git push |
| 拉取 | git pull --rebase |
| 创建分支 | git checkout -b 分支名 |
| 合并 | git merge 分支名 |
| 暂存 | git stash |
| 撤销提交 | git revert HEAD |
| 删除分支 | git branch -d 分支名 |
4.3 GitHub CLI
gh repo create、gh pr create、gh issue list、gh run watch、gh search repos "topic:python stars:>1000"。
4.4 在线编辑 6 种方式
① 直接编辑(点击✏️)② 新建/上传文件 ③ 按 . 键打开 Web VS Code ④ github.dev(改URL)⑤ 分支内编辑(安全模式)⑥ Copilot 在线补全。
4.5 GitHub Desktop
图形化 Git 客户端。Clone/Commit/Push/Pull/分支/PR 全部可视化操作。自带冲突解决工具。
4.6 SSH/GPG/Token
SSH 最推荐用于 Git 操作;GPG 让 Commit 显示 Verified;PAT Token 用于 API 和 CI。
4.7 Git 高级操作
stash:暂存当前工作。cherry-pick:精选提交复制到当前分支。rebase -i:交互式整理提交历史(合并/编辑/删除)。bisect:二分查找 Bug 源头。submodule:子模块管理。clean:清理未跟踪文件。
05 协作开发
GitHub 的真正力量在于协作——多人异地同步开发。
5.1 Fork+PR 流程
git clone 你的Fork地址git remote add upstream 原仓库地址git checkout -b fix-bug5.2 Code Review
行内评论
Files changed 标签页,点 ➕ 评论某行。
Suggest Changes
一键应用建议代码。
审查结论
Approve / Comment / Request changes。
人文关怀
先肯定再提建议,解释为什么改。
5.3 保护分支
Settings → Branches → Add rule:Require PR before merging、Require approvals、Require status checks、Require signed commits、Conversation resolution。
5.4 分支策略
GitHub Flow — 简单,main+feature 分支,PR 即上线。Git Flow — 复杂,main+develop+feature+release+hotfix。Trunk-Based — 直接 main 小步提交。
06 GitHub Pages · 免费建站
不需要服务器、不需要域名、不需要备案——零成本上线网站。
两种站点:个人站点(仓库名=用户名.github.io,访问 https://用户名.github.io)和项目站点(Settings→Pages→选分支)。支持 Jekyll/Hugo/Hexo/VuePress/Docusaurus/纯静态 HTML。
自定义域名:DNS 添加 CNAME 记录指向 用户名.github.io,GitHub Settings 中设置域名,自动 HTTPS。
07 GitHub Actions · 自动化一切
CI/CD 不再是大型团队专利。
7.1 基础概念
Event 触发条件 → Workflow YAML 定义流程 → Job 单元任务 → Step 最小步骤 → Action 可复用模块 → Runner 虚拟机执行。
7.2 语法示例
name: CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with: { python-version: "3.11" }
- run: pip install -r requirements.txt
- run: pytest
7.4 常用 Actions
actions/checkout、actions/setup-*、actions/cache、actions/upload-artifact、peaceiris/actions-gh-pages、codecov/codecov-action、github/codeql-action。
08 安全中心
代码即资产——多层次安全保护。
2FA 两步验证
必须开启。推荐 Authenticator App。
登录通知
新设备登录时邮件通知。
Dependabot
依赖漏洞检测+自动修复PR。
CodeQL
PR 阶段自动安全扫描。
Secret Scanning
自动检测泄漏的密钥。
09 GitHub Copilot · AI 编程助手
写代码时自动补全——编程界的"输入法智能联想"。
Copilot Free(2000条/月)或 Pro($10/月,无限制)。主要功能:代码自动补全、Copilot Chat(Ctrl+I)、自动生成测试、PR 描述自动生成。
10 Codespaces · 云端开发环境
浏览器里的完整 VS Code——零配置。
免费额度:每月120小时(2核)。通过 .devcontainer/devcontainer.json 配置统一环境。支持 Live Share 实时协作。
11 Git 进阶技巧
Git Hooks
pre-commit 自动 lint、pre-push 运行测试。
Worktree
同时处理多个分支而不切换。
Git LFS
大文件存储(>50MB)。免费2GB。
Reflog
后悔药——reset --hard 后也能恢复。
Alias
git config --global alias.st status 创建别名。
12 发现探索
Trending(github.com/trending)、高级搜索(stars:>5000 language:python)、Awesome 系列、Gist 代码片段、Good First Issues。
14 工具集成
VS Code(GitHub PR扩展+Copilot)、JetBrains、Git CLI、Git GUI(Sourcetree/GitKraken/Fork)、Netlify/Vercel、Slack/Discord/Jira。
15 API & Webhooks
REST API:api.github.com/users/用户名。GraphQL API:api.github.com/graphql。Webhooks:仓库事件实时推送(push/PR/Issue/Release)。
16 参与开源
不止写代码:修文档、报告Bug、帮助回答问题、写测试、翻译、UI改进。找 Good First Issue 标签。原则:先读 CONTRIBUTING.md、一个PR只做一件事、积极回应Review。
17 常见错误
▶ Not a git repository
▶ Push rejected 非快进
▶ Permission denied (publickey)
▶ detached HEAD
▶ 密码泄漏到公开仓库
18 快捷键
19 FAQ 常见问题
▶ GitHub 免费吗?
▶ 不会代码用 GitHub 有用吗?
▶ Fork 和 Clone 区别?
▶ 如何删除仓库?
▶ Merge Conflict 怎么解决?
▶ 怎么给开源项目贡献?
▶ 访问慢怎么办?
▶ 忘了 gitignore 上传了 node_modules?
▶ 怎么撤回 Commit?
▶ SemVer 语义化版本?
20 Git 命令完全参考
100+ 条 Git 命令分类速查。
初始化与配置
| 命令 | 说明 |
|---|---|
| git init | 初始化新仓库 |
| git clone url | 克隆远程仓库 |
| git clone --depth=1 url | 浅克隆,大型项目加速 |
| git config --global user.name "名" | 设置提交者姓名 |
| git config --global user.email "邮箱" | 设置提交者邮箱 |
| git config --list | 查看所有配置 |
日常修改
| 命令 | 说明 |
|---|---|
| git status | 查看状态 |
| git status -s | 简短状态 |
| git add . | 添加所有更改到暂存区 |
| git add -p | 交互式逐块选择 |
| git commit -m "信息" | 提交 |
| git commit --amend | 修改最新提交 |
| git rm 文件 | 删除文件并记录 |
分支
| 命令 | 说明 |
|---|---|
| git branch | 列出分支 |
| git branch -a | 列出所有(含远程) |
| git checkout -b 分支 | 创建并切换 |
| git switch 分支 | 切换分支(新语法) |
| git branch -d 分支 | 删除分支 |
| git merge 分支 | 合并 |
| git rebase -i HEAD~3 | 交互式变基 |
远程同步
| 命令 | 说明 |
|---|---|
| git remote -v | 列出远程仓库 |
| git fetch | 获取不合并 |
| git pull | 拉取并合并 |
| git push | 推送 |
| git push -u origin 分支 | 首次推送关联 |
| git push --force-with-lease | 安全强制推送 |
查看
| 命令 | 说明 |
|---|---|
| git log --oneline --graph | 简洁分支图 |
| git log -p | 带 diff 的日志 |
| git diff | 工作区差异 |
| git show SHA | 查看提交详情 |
| git blame 文件 | 逐行追溯 |
| git grep "关键词" | 代码搜索 |
撤销
| 命令 | 说明 |
|---|---|
| git restore 文件 | 撤销工作区修改 |
| git restore --staged 文件 | 取消暂存 |
| git reset --soft HEAD~1 | 撤销提交保留修改 |
| git reset --hard HEAD~1 | 撤销提交丢弃修改⚠️ |
| git revert HEAD | 反向提交(安全) |
暂存
| 命令 | 说明 |
|---|---|
| git stash | 暂存工作区 |
| git stash pop | 恢复暂存 |
| git stash list | 查看暂存列表 |
标签与调试
| 命令 | 说明 |
|---|---|
| git tag -a v1.0 -m "信息" | 创建带注释标签 |
| git push --tags | 推送所有标签 |
| git reflog | 后悔药 |
| git cherry-pick SHA | 精选提交 |
| git bisect start | 二分查找 Bug |
| git worktree add 路径 分支 | 多分支同时处理 |
21 Git 配置详解
三层级:System(全部用户)、Global(当前用户)、Local(当前仓库)。优先级 Local > Global > System。
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| user.name/email | 你的信息 | 提交作者,邮箱需关联 GitHub |
| init.defaultBranch | main | git init 默认分支名 |
| pull.rebase | true | pull 用 rebase 避免 merge commit |
| core.autocrlf | input/true | 跨平台换行符处理 |
| core.quotepath | false | 显示中文文件名 |
| merge.conflictstyle | zdiff3 | 冲突标记更多上下文 |
| fetch.prune | true | 自动清理已删远程分支引用 |
| rerere.enabled | true | 记录冲突解决方案自动复用 |
22 Git 内部原理
.git 目录:objects/(对象存储)、refs/(引用)、HEAD(当前指针)、index(暂存区)。
三种核心对象:Blob(文件内容)、Tree(目录结构)、Commit(快照+父提交+作者+时间+信息)。
关键理解:Git 每个 Commit 存储全部文件的快照(不是差异),相同内容共享 Blob,所以高效。
23 项目管理案例
个人学习:公开仓库 + main 直接提交 + Pages 部署。小团队:私有仓库 + GitHub Flow + 1人 Review + Projects 看板。大型开源:公开 + Git Flow + 2人 Review + CONTRIBUTING.md + CODEOWNERS。
24 优质开源项目推荐
Python:yt-dlp/yt-dlp、pallets/flask、tiangolo/fastapi、django/django。JS/TS:facebook/react、vuejs/vue、vercel/next.js。AI:tensorflow/tensorflow、pytorch/pytorch、huggingface/transformers、langchain-ai/langchain。学习资源:freeCodeCamp(405k⭐)、EbookFoundation/free-programming-books(340k⭐)、donnemartin/system-design-primer(275k⭐)。
27 完整学习路线图
入门期(1-7天):注册账号、创建仓库、学 Markdown、Star 项目。基础期(1-2周):Git 核心命令、SSH 配置、分支/合并、Issue、Pages。熟练期(2-4周):Fork+PR 流程、Actions 基础、.gitignore、解决冲突。精通期(1-3月):Matrix Build、cherry-pick/rebase/bisect、GPG 签名、GitHub CLI。大师期:创建开源项目、成为 Maintainer、编写 Action。
13 社交生态
13.1 成就系统
Starstruck(16⭐)、Pull Shark(2PR合并)、YOLO(无审查合并)、Galaxy Brain(回答采纳)、Arctic Code Vault(北极存档,已绝版)。
13.2 Profile README
创建 用户名/用户名 仓库。可用 github-readme-stats 显示统计图、github-readme-activity-graph 活动图。Actions 可定时更新。
13.3 徽章
Shields.io:版本/许可证/Stars/CI状态/下载量/代码覆盖率。