GitHub 完全拆解指南

从零到一,AI 小白也能玩转全球最大代码托管平台 · 100+ 知识点全覆盖 · 图文并茂

108 个知识点 12 张结构图 30+ 操作步骤 新手友好

01 入门篇 · GitHub 世界观

如果你是第一次听说 GitHub,从这里开始。用最直观的方式理解这个世界。

📍 GitHub 到底是什么?

🏠

全球最大代码托管平台

GitHub 是一个基于 Git 的代码托管网站,全球超过 1 亿 开发者在这里存放、管理和协作代码。你可以把它理解成"代码界的 Google Drive",但功能强大得多。

🌍

程序员的社交网络

在 GitHub 上你可以关注有趣的人、给喜欢的项目点赞(Star)、复制别人的代码(Fork)、提出建议(PR),像微博+知乎+网盘的结合体。

🧩

开源世界的基石

Linux、Python、React、Vue、TensorFlow……几乎所有你听过的知名开源项目都托管在 GitHub 上。这里是全人类共享代码智慧的地方。

📄

在线简历 & 作品集

招聘程序员时,面试官的第一件事就是看你的 GitHub 主页。你的提交记录、Star 过的项目、贡献过的仓库——都是你技术能力的证明。

🤖

你的 AI 编程助手

GitHub Copilot(基于 OpenAI)能在你写代码时自动补全;GitHub Actions 可以自动测试、构建、部署。这些都在一个平台上。

📚

免费学习资源宝库

从 Python 入门到深度学习,从算法题到系统设计——GitHub 上有海量学习资料、面试题库、开源书籍,全部免费。

📍 Git vs GitHub — 别再搞混了

flowchart LR A["🖥 你的电脑
本地仓库"] -->|"git init / git clone"| B["💻 本地 Git"] B -->|"git add + git commit"| C["📦 Git 版本历史"] C -->|"git push"| D["☁️ GitHub 远程仓库"] D -->|"git pull"| B D -->|"Fork"| E["👥 其他人的仓库"] E -->|"Pull Request"| D B -->|"git branch"| F["🌿 分支管理"] style A fill:#1f2937,stroke:#58a6ff,color:#e6edf3 style B fill:#1f2937,stroke:#3fb950,color:#e6edf3 style C fill:#1f2937,stroke:#d29922,color:#e6edf3 style D fill:#1f2937,stroke:#bc8cff,color:#e6edf3 style E fill:#1f2937,stroke:#f778ba,color:#e6edf3 style F fill:#1f2937,stroke:#f85149,color:#e6edf3
▼ Git 是本地版本控制工具 · GitHub 是云端协作平台
维度GitGitHub
是什么版本控制工具(软件)代码托管平台(网站)
安装方式本地安装 git 命令行注册账号,浏览器使用
主要用途记录代码变更、创建分支、合并代码托管代码、协作开发、项目管理
联网需求可离线使用需要网络
费用免费开源免费(私有仓库也免费)
类比Word 的"修订历史"功能百度网盘 + 微博 + 知乎

📍 为什么每个学习者都要用 GitHub?

1亿+
全球开发者
4.2亿+
仓库总数
90%
大厂使用率
免费
个人使用
🛡️

代码永不丢失

本地电脑坏了?误删了文件?GitHub 上有完整的历史记录,可以回退到任意版本。

🗺️

贡献可视化

你的每一次提交都被记录在"绿色小方块"贡献图上——连续打卡的成就感超强。

🤝

团队协作利器

多人同时修改一个文件?GitHub 的冲突解决机制让这件事安全可靠。

📈

项目管理

Issues + Projects + Milestones = 完整的项目全生命周期管理。公司里也一样用。

🌐

免费网站托管

GitHub Pages 让你免费搭建个人博客、项目官网,而且支持自定义域名。

🤖

自动化一切

Actions 自动测试、自动部署、自动发邮件……把重复劳动交给机器。

📍 注册与初始化设置

1
注册账号

打开 github.com,点击 Sign up。输入用户名、邮箱、密码。邮箱需要验证(收验证码)。免费

用户名就是你的 GitHub 身份 ID,别人通过 github.com/你的用户名 找到你。建议用英文名+数字的组合,例如 alice-2025
2
完善个人主页

点击右上角头像 → SettingsProfile。上传头像、写一段个人简介、添加你的网站或社交链接。

头像建议用真实照片或卡通头像。招聘人员看 GitHub 时,真人头像的信任度更高。
3
两步验证(强烈推荐)

Settings → Password and authentication → 开启 Two-factor authentication。你可以用手机 Authenticator 应用或短信验证。

不开启两步验证的 GitHub 账号被黑客盗取后,你的所有私人仓库代码都会泄露!
4
配置 SSH 密钥(免密推送)

打开终端/命令提示符,输入以下命令👇

# 生成密钥(一路回车即可)
ssh-keygen -t ed25519 -C "你的邮箱@example.com"

# 查看公钥并复制
cat ~/.ssh/id_ed25519.pub

# 然后去 GitHub: Settings → SSH and GPG keys → New SSH key → 粘贴
5
设置 Git 本地身份

第一次使用 Git 时需要告诉电脑你是谁👇

git config --global user.name "你的GitHub用户名"
git config --global user.email "你的GitHub邮箱"
6
认识你的个人主页

访问 github.com/你的用户名,你会看到:

📸 左侧个人信息

头像、简介、关注/粉丝数、组织、赞助按钮

📌 顶部 Pin 住的仓库

你最骄傲的项目会展示在这里

📊 贡献图 (Contribution Graph)

绿色方块 = 提交代码的天数,越绿越勤奋

📋 仓库列表

你拥有的所有公开仓库,可按语言/时间排序

02 核心概念 · 这些词你必须懂

GitHub 有自己的"方言"。搞懂这些词,你就能看懂 90% 的 GitHub 页面。

mindmap root((GitHub 生态)) 仓库 Repository README LICENSE .gitignore Issues Pull Requests Projects Wiki Discussions 社交 Social Star Fork Watch Follow Sponsor 版本控制 Git 分支 Branch 提交 Commit 标签 Tag / Release 合并 Merge 冲突 Conflict 自动化 CI/CD Actions Workflows Secrets Artifacts 发布 Pages 个人站点 项目站点 自定义域名
▼ GitHub 生态全景 —— 每个模块都值得深入了解

📍 Repository(仓库)— 一切的基础

仓库就是一个项目的根目录,存放所有代码、文档、Issues、讨论…… 每一个"项目"就是一个仓库。

📁

公开仓库 Public

全世界任何人都可以看到、克隆(下载)、Fork(复制)。开源项目都用这种。免费。

🔒

私有仓库 Private

只有你和邀请的协作者能看到。适合商业代码或未完成的项目。免费(无限制)。

🏢

仓库所属权

仓库可以属于个人账号,也可以属于组织(Organization)。组织可以设置团队权限、多人管理。

📐

仓库模板 Template

你可以把自己的仓库设为模板,别人用它一键创建同样结构的新项目。

仓库名称 命名规则

例如 awesome-pythonmy-first-repo。命名建议用英文小写+连字符,语义清晰。

仓库描述 Description

在仓库名下方的一行文字,告诉访客这个项目是做什么的。例如"一个帮你管理日常任务的 Python 工具"。

Topics 标签分类

给仓库打标签,比如 pythonmachine-learningreact,方便被搜索到。

仓库网址 URL

格式:github.com/用户名/仓库名。例如 github.com/torvalds/linux 是 Linux 内核。

📍 README.md — 仓库的脸面

flowchart TD A["📘 README.md"] --> B["项目叫什么"] A --> C["有什么用"] A --> D["怎么安装"] A --> E["怎么使用"] A --> F["示例 / 截图"] A --> G["API 文档"] A --> H["如何贡献"] A --> I["许可证"] A --> J["致谢 / 赞助"] style A fill:#1f2937,stroke:#58a6ff,color:#e6edf3
▼ 优秀 README 的经典结构

README 是 Markdown 格式(后缀 .md)。Markdown 是一种轻量级标记语言,用简单符号就能排版。你只需要知道这些:

Markdown 写法效果
# 标题一级标题
## 副标题二级标题
**加粗**加粗
`代码`代码
```python ... ```代码块(带语法高亮)
- 列表项无序列表
1. 第一步有序列表
![图片](url)插入图片
[链接](url)超链接
> 引用引用块
GitHub 支持在 README 里直接渲染 Mermaid 图表!上面那些结构图其实就是用 Mermaid 语法写在 Markdown 里的。

📍 Issue(议题)— 提问题 / 报 Bug

flowchart LR A["📌 新建 Issue"] --> B{"Issue 类型"} B --> C["🐛 Bug 报告
软件出错了"] B --> D["✨ 功能请求
想要新功能"] B --> E["❓ 提问 / 求助
不会用了"] B --> F["📝 任务 / 待办
记录要做的事"] C --> G["👥 开发者讨论"] D --> G E --> G F --> G G --> H["🔧 修复 / 实现"] H --> I["✅ Pull Request 关闭 Issue"]
▼ Issue 生命周期 —— 从提出到关闭
🏷️

标签 Labels 分类管理

每个 Issue 可以贴标签:bugenhancementhelp wantedgood first issuequestion 等等,方便筛选。

👤

指派 Assignees 分配任务

把 Issue 分配给某个人,表示"这个问题由你来处理"。可以同时指派多人。

🔗

里程碑 Milestones 版本规划

把多个 Issue 归类到一个"里程碑"(比如 v1.0 发布),追踪项目进度。

📋

项目看板 Projects Kanban

把 Issues 拖拽到一个类似 Trello 的看板上:To Do → In Progress → Done。

🔄

跨仓库引用 Cross-Reference

在 Issue 评论中输入 #123 引用本仓库的 Issue;用户名/仓库名#123 引用其他仓库。

💬

评论与回复 讨论串

每个人都可以在 Issue 下评论,支持 Markdown、图片、代码块、@提及他人。

📍 Pull Request(PR)— 提代码 / 求合并

flowchart TD A["🌿 创建功能分支"] --> B["✏️ 修改代码"] B --> C["💾 Commit 提交"] C --> D["📤 Push 推送"] D --> E["🔄 创建 Pull Request"] E --> F["👁 Code Review
其他开发者审查"] F -->|"❌ 需要修改"| G["🔄 修改后重新提交"] G --> F F -->|"✅ 审查通过"| H["🔀 Merge 合并到主分支"] H --> I["🎉 PR 关闭
变更生效"]
▼ 标准 Pull Request 流程
PR 标题与描述 说明你的改動

标题简洁概括(如"修复登录页闪退问题"),描述详细说明改动原因、改了什么、如何测试。

Conversation 讨论区

审查者可以针对每一行代码发表评论。发起者需要在讨论中解释或修改。

Commits PR 内的提交

一个 PR 可以包含多个 Commit。每次 Push 新代码都会自动追加到这个 PR 中。

Checks 自动检查

Actions 自动运行测试/构建,检查通过(绿色✓)才能合并,防止坏代码进入主分支。

Merge 方式 三种策略

Create a merge commit(保留完整历史)/Squash and merge(压缩成一个提交)/Rebase and merge(线性历史)

Draft PR 草稿模式

代码写到一半时创建 Draft PR,告诉别人"还在建设中,请先别合并"。完成后点击 Ready for review。

📍 Fork / Star / Watch — 三个最有用的按钮

flowchart LR A["⭐ Star"] --> B["📌 收藏 / 点赞
相当于 '我很喜欢这个项目'"] C["🍴 Fork"] --> D["📋 复制到自己的账号
克隆一份独立副本"] E["🔔 Watch"] --> F["👀 订阅通知
该项目的动态会通知你"] B --> G{"作用"} G --> H["项目作者获得成就感
帮你以后快速找到它"] D --> I{"作用"} I --> J["自由修改代码
修改后可以给原项目提 PR"] F --> K{"作用"} K --> L["Issue/PR/讨论
第一时间收到通知"] style A fill:#1f2937,stroke:#d29922,color:#e6edf3 style C fill:#1f2937,stroke:#f778ba,color:#e6edf3 style E fill:#1f2937,stroke:#58a6ff,color:#e6edf3
▼ 三个核心社交按钮
功能图标中文叫法做了什么什么时候用
Star收藏 / 点赞收藏这个仓库到你的 Star 列表看到好项目、想以后再看
Fork🍴复制 / 派生把该仓库复制到你自己的 GitHub 账号下想修改别人的代码、想贡献 PR
Watch👁 / 🔔关注 / 订阅订阅该仓库的所有新动态想密切关注某个项目的进展
Fork 之后你的副本与原仓库无关——你可以在自己的副本里任意修改,不会影响原仓库。如果想把自己的改动合并回原仓库,就提一个 Pull Request。

📍 LICENSE & .gitignore — 两个重要的配置

📜

LICENSE(许可证)

开源不等于"随便用"。许可证告诉别人:能不能商用?要不要署名?改了的代码要不要也开源?常见的许可证:

MIT 最宽松,随便用 Apache 2.0 宽松+专利保护 GPL 必须开源 BSD 类似 MIT
🚫

.gitignore(忽略文件)

有些文件不应该上传到 GitHub:

  • 📁 node_modules/ —— Node.js 依赖包
  • 🔑 .env —— 环境变量/密码
  • 🖼 *.log —— 日志文件
  • ⚙️ .idea/ —— IDE 设置
  • 📦 __pycache__/ —— Python 缓存

.gitignore 文件里写一行一个规则,Git 就会自动忽略这些文件。

🌿

默认分支 (Default Branch)

早期 GitHub 默认分支叫 master,现在是 main。这是仓库的主干,所有最终发布的代码在这里。

📝

仓库可见性切换

公开→私有:已有的公开仓库可以改为私有,但 Fork 过的副本不会自动同步。
私有→公开:确认没有敏感信息后即可切换。

03 仓库深度 · 读懂仓库的每一个角落

打开一个 GitHub 仓库,你能看到什么?每一个元素都值得玩味。

📍 仓库页面结构详解

flowchart TB A["📦 仓库首页"] --> B["🔝 顶部导航栏"] A --> C["📊 代码区 Code Tab"] A --> D["ℹ️ 右侧信息栏"] B --> B1["Code / Issues / PRs / Projects / Wiki / Insights / Settings"] C --> C1["📁 文件列表
文件夹+文件+大小+最后修改时间"] C --> C2["📖 README.md
仓库首页下面的展示内容"] D --> D1["⭐ Star 数 / 🍴 Fork 数 / 👁 Watch 数"] D --> D2["🔗 网站 / Topics / License"] D --> D3["📅 最后更新 / 语言占比 / 贡献者"]
▼ 仓库页面布局一览
📁

Code(代码)默认页

展示仓库的文件目录树。可以点击进入文件夹、查看文件内容。支持在线浏览代码。

📋

Issues(议题)讨论区

项目的"意见箱"——Bug 报告、功能建议、提问。

🔄

Pull Requests 合并请求

所有正在审查中的 PR 列表。已关闭的 PR 也保存在这里。

📌

Projects 看板

项目管理和任务追踪,支持表格和看板两种视图。

📚

Wiki 文档百科

类似一个简单的维基百科,可以写详细的文档、教程、API 说明。

💬

Discussions 社区论坛

比 Issues 更自由——提问、想法、投票、展示你的作品。

📊

Insights 分析统计

贡献者排行、提交频率、代码频率、网络图等数据。

⚙️

Settings 设置

只有仓库拥有者可见:改名、修改可见性、删除仓库、管理协作者。

🔍

搜索文件 快捷键 t

t 键快速搜索仓库中的文件,大型项目必备。

📥

下载按钮 Code ▼

绿色 Code 按钮:Clone(通过 Git 下载)或 Download ZIP(直接下载压缩包)。

🔖

Release 版本发布

正式发布版本的地方,可以打 tag(v1.0、v2.0),附上发布说明和安装包。

📍 分支(Branch)与 标签(Tag / Release)

gitGraph commit id: "初始化" branch dev checkout dev commit id: "开发A功能" commit id: "开发B功能" checkout main commit id: "修复Bug-1" checkout dev commit id: "C功能完成" checkout main merge dev id: "合并dev到main" commit id: "v1.0发布" tag: "v1.0" branch feature-x checkout feature-x commit id: "实验性改动" checkout main commit id: "修复Bug-2"
▼ 分支策略示例 —— main(稳定) + dev(开发) + feature(功能分支)
🌿

分支 (Branch) 并行开发

分支让你可以"平行宇宙"式开发——在 dev 分支写新功能,同时在 main 分支修 Bug,互不影响。最后再将 dev 合并到 main。

🏷️

标签 (Tag) 里程碑标记

在某个 Commit 上贴一个标签(如 v1.0、v2.0.1),标记版本发布点。标签不可修改——发布后就不能改了。

📦

Release 正式发布

基于 Tag 的"发布包"——可以附加发布说明、二进制文件、安装包。用户在 Releases 页面就能下载。

分支保护 防误操作

设置中可开启 Branch Protection:禁止直接 Push 到 main 分支、要求 PR 审查通过、要求 Actions 通过。

📍 Commit(提交)— 每一次改动的快照

Commit 是 Git 的核心概念——每次 Commit 就像是给整个项目拍了一张"快照",记录了这一时刻所有文件的样子。

Commit SHA 唯一标识

每个 Commit 都有一个 40 位的十六进制哈希值(如 a1b2c3d4e5f6...),全球唯一。也可以只用前 7 位来引用。

提交信息 (Commit Message) 写清楚改了啥

好的格式:第一行标题(50字内)+ 空行 + 详细描述。例如:
feat: 添加用户登录功能
修复了当用户输入空密码时的崩溃问题

作者 Author 谁改的

显示姓名 + 邮箱 + 时间。跟 GitHub 账号关联后,头像也会显示。

绿点+红点 改了什么

Commit 详情页显示 + 绿色(新增)和 - 红色(删除)的代码 diff。

parent 父提交

每个 Commit 指向它的前一个 Commit,形成一条"链"。Merge 提交有两个 parent。

Commit 在 Git 中是不可变的!一旦提交,历史就不能篡改(除非强制重写,但会被认为是危险操作)。这保证了代码审查的可追溯性。

📍 Insights(统计洞察)— 用数据看项目

👥

Contributors 贡献者

按提交次数排名的贡献者列表,显示每个人的提交数和新增/删除行数。第一个通常是项目作者。

📈

Commits 提交频率

按时间维度的提交统计图,可以看到项目活跃期和休眠期。

🔄

Code Frequency 代码增减

每周新增和删除代码行数的柱状图。绿色=新增,红色=删除。

🌐

Network 分支网络

所有分支和 Fork 的关系图,展示复杂的分支合并历史。

Pulse 活跃脉搏

过去一周/月的项目活动摘要——开了多少 Issue、合并了多少 PR 等。

🃏

Traffic 流量统计

仓库的访客数和访问量(GitHub 统计),公开仓库才能看到。

04 操作实战 · 从创建到发布

跟着步骤做一遍,你就真正上手了。这里覆盖了最常用的所有操作。

📍 创建你的第一个仓库

1
点击右上角 ➕ → New repository

或者直接访问 github.com/new

2
填写仓库信息

Repository name:比如 hello-world
Description(可选):"我的第一个 GitHub 项目"
Public / Private:选 Public(公开的)

3
初始化仓库(三个勾选)

Add a README file —— 自动创建 README.md
Add .gitignore —— 选 Python 或你的语言
Choose a license —— 建议选 MIT

4
点击 Create repository 🎉

你的第一个仓库诞生了!现在可以在网页上编辑文件了。

📍 克隆到本地 & 推送代码

以下操作需要先安装 Git:git-scm.com 下载安装,一路默认即可。
sequenceDiagram participant L as 💻 本地电脑 participant G as ☁️ GitHub L->>L: git init / git clone L->>L: 修改文件 L->>L: git add . L->>L: git commit -m "描述" L->>G: git push G-->>L: git pull
▼ 本地 ↔ GitHub 的日常同步循环
命令中文做了什么
git clone 仓库地址克隆把 GitHub 上的仓库第一次下载到本地
git status状态查看看看哪些文件被修改过了
git add 文件名暂存把修改的文件"加入待提交区"
git add .全部暂存把所有修改文件加入待提交区
git commit -m "说明"提交正式拍一张快照(本地)
git push推送把本地的提交上传到 GitHub
git pull拉取从 GitHub 下载最新代码到本地
git branch分支列表列出所有分支,*号表示当前分支
git checkout -b 新分支创建并切换创建新分支并立即切换过去
git merge 分支名合并把指定分支的改动合并到当前分支
git log --oneline提交历史简洁版提交日志
git diff差异对比看看当前改动和上次提交的差异
克隆仓库
git clone https://github.com/你的用户名/hello-world.git
cd hello-world
创建文件并编辑

在文件夹里新建一个 index.html,写点简单内容。

添加并提交
git add index.html
git commit -m "添加首页文件"
推送到 GitHub
git push origin main

回到浏览器刷新仓库页面,新文件出现了!

📍 在线编辑(不用装任何软件)

GitHub 网页本身就是一个强大的编辑器!完全不需要在本地装 Git:

📝

直接编辑文件 点击 ✏️

在仓库里点击任意文件 → 右上角 ✏️ 铅笔图标 → 在网页上直接修改 → 点击 Commit changes。GitHub 会自动帮你完成 Commit。

新建文件 Add file

点击 Add fileCreate new file。输入文件名和内容,直接提交到仓库。

📤

上传文件 Upload files

直接把文件拖拽到浏览器窗口,或者点击 Upload files 选择文件。支持批量上传。

💻

GitHub 在线编辑器 按下 . 键

在任意仓库页面按键盘的 . 键(英文句号),会直接打开一个网页版 VS Code!这是 GitHub 的隐藏神技。

🧪

分支内编辑 先建分支

在文件编辑页面,选择 "Create a new branch for this commit",这样你的修改就不会影响主分支。

🔎

Preview 预览 Preivew

编辑 Markdown 文件时,点击 Preview 标签可以实时看到渲染效果,不用保存。

📍 GitHub Desktop — 不想记命令?用这个

GitHub Desktop 是 GitHub 官方出品的桌面应用,全图形界面不需要记任何命令行。对新手极度友好。

📥

下载 免费

访问 desktop.github.com 下载安装。登录你的 GitHub 账号。

📋

Clone 仓库 点几下就行

File → Clone Repository → 选择仓库 → 选择本地路径 → Clone。

✏️

看到所有改动 Changelist

左边显示所有修改过的文件,右边显示具体的改动内容(绿+红)。一目了然。

💾

Commit 填写信息

在底部填 Summary(必填,一句话说明)和 Description(可选),点击 Commit。

📤

Push / Pull 一键操作

点击 Fetch origin 拉取更新,点击 Push origin 推送提交。按钮上有数字提示。

🌿

分支管理 可视化

点击顶部分支名 → New Branch → 输入名称。切换分支也是点一下。

🔄

创建 PR 浏览器打开

Commit 后点击 "Create Pull Request" 按钮,自动在浏览器打开 PR 页面。

冲突检测 直观

如果有冲突,Desktop 会明确提示你,并让你选择保留哪个版本。

📍 SSH 密钥 & Token — 安全连接

GitHub 提供了多种方式来验证你的身份,避免每次操作都输入密码:

方式优点设置难度推荐场景
SSH 密钥一次设置,永久使用;更安全⭐⭐ 中等个人电脑(开发者首选)
Personal Access Token (PAT)灵活,可设置过期时间和权限⭐ 简单脚本/CI/临时访问
GitHub CLI命令行登录,自动处理认证⭐ 简单命令行重度用户
浏览器登录 (HTTPS)无需配置,用浏览器完成认证⭐ 最简单偶尔使用/新手
2021年起 GitHub 不再接受密码进行 Git 操作。你必须使用 SSH 密钥或 Token。推荐 SSH 密钥——一次配置,永久省心。

05 协作开发 · 和世界一起写代码

GitHub 的终极魅力是协作。掌握这些流程,你就能参与任何开源项目。

📍 Fork → Clone → PR 标准流程

flowchart LR subgraph 原仓库 A["🔒 原作者仓库"] --> B["👑 main"] end subgraph 你的账号 C["🍴 你 Fork 的副本"] --> D["🌿 你的功能分支"] end subgraph 本地 E["💻 Clone 到本地"] end C --> E E -->|修改代码| D D -->|git push| C C -->|"🔄 Pull Request"| A A -->|"👁 审查后合并"| B
▼ 开源贡献的经典流程 —— Fork → 修改 → PR
1
Fork 原仓库

打开你想贡献的 GitHub 仓库 → 点击右上角 Fork 按钮。现在你的账号下有了一个一模一样的副本。

2
Clone 到本地
git clone https://github.com/你的用户名/仓库名.git
cd 仓库名
3
创建新分支(重要)

永远不要直接在 main 分支上改!

git checkout -b fix-login-bug
4
修改代码并提交
# 修完Bug后
git add .
git commit -m "fix: 修复登录页密码错误提示不显示"
5
推送分支到你的 Fork
git push origin fix-login-bug
6
创建 Pull Request

回到你的 GitHub Fork 页面 → 会看到一个黄色横幅提示 "fix-login-bug had recent pushes",点击 Compare & pull request → 填写 PR 标题和说明 → 点击 Create pull request

7
等待审查 & 合并 🎉

项目维护者会看到你的 PR,他可能会要求修改。如果有修改需求,你只需要在本地改完后 git push,PR 会自动更新。

8
保持你的 Fork 同步

过一段时间后原仓库可能有新提交,你需要同步:

# 添加原仓库为 upstream
git remote add upstream https://github.com/原作者的仓库名.git

# 拉取最新代码
git fetch upstream
git checkout main
git merge upstream/main
git push origin main

📍 Code Review(代码审查)— 如何评审别人的 PR

💬

行内评论 精准

在 PR 的 Files changed 标签页,鼠标悬停在某一行代码上,点击蓝色 ➕ 号即可对该行发表评论。

📝

Summary Comment 总结

在 PR 页面底部的评论区发一条总结性意见,可以 @ 相关人员。

Approve / Comment / Request Changes

审查完毕后在右上角点击 Finish your review
✅ Approve — 批准合并
💬 Comment — 提建议但不阻塞
❌ Request Changes — 必须改了再合并

🤖

自动审查机器人 辅助工具

有许多 GitHub Apps 可以自动审查代码:检查代码风格(ESLint)、检测安全问题(CodeQL)、测试覆盖率(Codecov)。

建议修改 Insert suggestion

在行内评论中,点击 Insert a suggestion 可以直接写出你建议的代码,PR 作者一键就能应用。

🛡️

Required Reviews 保护规则

仓库设置中可以要求:至少 1 人 Review 通过后才能合并、最新代码必须经过审查等。

📍 分支策略 — 团队怎么组织代码

flowchart TD A["📦 main / master
生产环境代码
稳定、可发布"] --> B["🌿 develop
日常开发分支
功能集成"] B --> C1["🌱 feature/登录功能"] B --> C2["🌱 feature/支付模块"] B --> C3["🌱 feature/搜索优化"] B --> D1["🐛 hotfix/紧急Bug"] D1 --> A C1 --> B C2 --> B C3 --> B
▼ Git Flow 经典分支模型(适合中大型团队)
策略复杂度适合场景
Git Flow⭐⭐⭐ 高大型团队、有版本规划的项目(如软件产品)
GitHub Flow⭐ 低小型项目、持续部署(每个 PR 上线就是一次发布)
主分支开发⭐ 最低个人项目、实验性项目
GitHub Flow 是 GitHub 官方推荐的方式:只有一个 main 分支,所有开发都在 feature 分支上完成,通过 PR 合并到 main。简单、高效、适合大多数项目。
了解 GitHub Flow 详细步骤
  1. 从 main 分支创建一个 feature 分支(git checkout -b feature-xyz
  2. 在 feature 分支上提交修改
  3. 推送到 GitHub(git push origin feature-xyz
  4. 创建 Pull Request
  5. 讨论、审查、修改
  6. 合并到 main 分支
  7. 自动部署(如果有 CI/CD)
学会查看别人仓库的 CONTRIBUTING.md

几乎所有大型开源项目都有 CONTRIBUTING.md(贡献指南),里面写了:

  • 如何报告 Bug(模板)
  • 代码风格要求
  • 测试要求
  • PR 提交规范
  • 行为准则(Code of Conduct)

在提 PR 之前,一定要先读 CONTRIBUTING.md!很多新手 PR 被拒的原因就是没看贡献指南。

06 GitHub Pages · 免费建站

用 GitHub Pages,你可以免费搭建个人博客、项目文档站、简历网站……不需要买服务器。

flowchart TD A["📤 推送代码到 GitHub"] --> B["⚙️ GitHub Pages 自动构建"] B --> C1["🏠 个人站点
username.github.io"] B --> C2["📁 项目站点
username.github.io/repo"] C1 --> D1["🌐 自定义域名
如果需要"] C2 --> D2["免费 HTTPS
自动启用"] B --> E{"支持"} E --> F["✅ 静态 HTML/CSS/JS"] E --> G["✅ Jekyll 博客"] E --> H["✅ React/Vue 打包后"] E --> I["✅ 自定义 404 页面"]
▼ GitHub Pages 工作流
🏗️

搭建个人站点 必做

创建一个仓库命名必须为 用户名.github.io。把 HTML 文件推到 main 分支,等 1-2 分钟,你的网站在 https://用户名.github.io 上线了!

这是 GitHub 给每个用户的"身份站点"。很多人的第一个 GitHub 项目就是这个。
📄

项目站点 每个仓库都有

进入仓库 Settings → Pages → 选择分支(如 main + /docs 文件夹)→ Save。访问地址:用户名.github.io/仓库名

✍️

Jekyll 博客 内置支持

GitHub Pages 原生支持 Jekyll 静态博客框架。你只需要写 Markdown 文章,它自动生成博客页面。也可以选其他框架(Hugo、Hexo等)。

🌐

自定义域名

Settings → Pages → Custom domain → 输入你的域名(如 blog.example.com)。然后在你的 DNS 服务商添加 CNAME 记录指向 用户名.github.io

🔒

免费 HTTPS

GitHub Pages 自动为你的站点签发 Let's Encrypt 证书。即使使用自定义域名也支持 HTTPS。

🎨

主题选择

GitHub Pages 提供多款 Jekyll 主题(Minima、Cayman、Slate 等),在 Settings → Pages → Change theme 一键切换。

07 GitHub Actions · 自动化流水线

Actions 是 GitHub 的 CI/CD(持续集成/持续部署)工具,让机器帮你做重复劳动。

flowchart LR A["📤 代码 Push"] --> B["⚡ 触发 Workflow"] B --> C["🔧 Job 1: 安装依赖"] C --> D["🧪 Job 2: 运行测试"] D --> E["📦 Job 3: 构建"] E --> F["🚀 Job 4: 部署"] F --> G["🌐 网站上线"] B --> H["🕐 定时触发
(cron 语法)"] B --> I["📝 PR 触发"]
▼ 一个典型 CI/CD 工作流的触发→执行→部署链
🤖

Workflow(工作流) .github/workflows/

用 YAML 文件定义自动化流程。文件放在仓库的 .github/workflows/ 目录下。每次 Push、PR 或定时触发时自动运行。

🧩

Marketplace 预制 Action

GitHub Marketplace 上有成千上万个别人写好的 Action 可以直接用:
- actions/checkout —— 拉取代码
- actions/setup-python —— 配置 Python
- peaceiris/actions-gh-pages —— 部署到 Pages

🔐

Secrets(密钥) 安全存储

Settings → Secrets and variables → Actions。你可以存 API Key、密码等敏感信息,Workflow 中用 ${{ secrets.MY_KEY }} 引用。

⏱️

定时任务 Cron 触发

Workflow 可以定时运行,比如每天凌晨自动爬取数据、每周生成报表。
schedule: - cron: '0 8 * * *'(每天早上8点)

🏃

Runner(运行器)

Workflow 在 GitHub 提供的免费虚拟机上运行(Linux/Windows/macOS)。免费额度:每月 2000 分钟。

Matrix Build 多版本并行

一键测试多个环境:Python 3.9/3.10/3.11 + Ubuntu/Windows/macOS 并行运行,一个配置搞定所有。

一个最常用的 Action 示例:每次 Push 时自动运行 pytest 测试,测试通过后自动部署到 GitHub Pages。你只需要在 .github/workflows/main.yml 写不到 30 行 YAML 配置。

08 发现探索 · 在 GitHub 上找到好东西

GitHub 不仅是代码托管平台,更是全球最大的学习资源库。

🔥

Trending(趋势) 今日热门

访问 github.com/trending。每天更新,展示今天最受关注的项目。可按语言(Python/JavaScript等)和时段(今天/本周/本月)筛选。

🔍

高级搜索 精准查找

在搜索框中输入关键字后,点击搜索框下方的标签进行筛选:语言、Star 数范围、创建时间等。高级语法:stars:>1000 language:python 搜索 Star 过千的 Python 项目。

📂

Explore(探索)发现新项目

GitHub 根据你的 Star 历史、关注的用户、仓库语言偏好,个性化推荐你可能喜欢的项目。

🏷️

Topics(主题)分类浏览

访问 github.com/topics。按技术栈浏览:machine-learning、react、game-development 等。每个 Topic 页面展示该领域的优秀项目。

📚

Awesome 系列 精选清单

搜索 awesome-xxx
awesome-python —— Python 精品资源合集
awesome-react —— React 生态大全
awesome-machine-learning —— 机器学习资源清单
这些是社区维护的"最佳资源列表"。

📖

开源书籍/教程 免费学习

搜索关键词:tutorialbooklearn-。例如:
freeCodeCamp/freeCodeCamp —— 免费编程课程
donnemartin/system-design-primer —— 系统设计入门

🎨

Showcases 主题收藏

GitHub 官方整理的精选项目集合,例如"Women in Open Source"、"GitHub Education"等。

📄

Gist(代码片段)gist.github.com

分享代码片段的好地方。可以创建公开或私密的 Gist,支持多文件、Markdown 描述。常用于:分享配置、贴代码求助、保存常用脚本。

🏆

GitHub Awards 成就系统

第三方网站 github-awards.com 展示了你在特定城市或国家/地区的 GitHub 排名。按 Star 数、Fork 数、贡献数等排行。

🎮

GitHub 游戏 边玩边学

有一些项目教你用游戏的方式学习 Git:
- pcottle/learnGitBranching —— 交互式 Git 学习
- gittower/git-game —— Git 解谜游戏

📰

Changelog & Releases 版本动态

关注你 Star 过的项目的 Releases 页面,看最新更新了什么。Watch 选择 "Releases only" 只接收版本发布通知。

Good First Issues 新手友好

搜索 label:"good first issue" 找到标注了"新手友好"的 Issue。这是参与开源的最佳起点!GitHub 还推出了 github.com/explore 推荐。

09 社交生态 · GitHub 也是朋友圈

GitHub 的社交功能让你找到志同道合的开发者,建立技术影响力。

👤

Follow(关注) 互相关注

关注你欣赏的开发者,他们的公开活动会出现在你的 Dashboard 上。被关注也是技术影响力的证明。

🏢

Organization(组织)团队管理

组织账号用于管理一个团队或公司的所有仓库。可以设置多级权限:Owner、Member、外面的 Collaborator。

👥

Team(团队)组织内部协作

组织内部可以创建多个团队(如 Frontend Team、Backend Team),对仓库设置不同访问权限。

💰

GitHub Sponsors 赞助

赞助你喜欢的开源项目开发者。每月固定金额,支持他们持续维护开原项目。很多知名开发者靠 Sponsors 获得收入。

🏅

GitHub Stars 排行 影响力指标

你的 GitHub 总 Star 数(所有仓库的 Star 数之和)是衡量你开源影响力的重要指标。但不必刻意追求——做出好的作品,Star 自然来。

📊

贡献图 (Contribution Graph) 你的绿方块

个人主页上显示的"绿色网格":每天有提交就变绿,颜色深浅表示提交次数。连续打卡记录的"Streak"是 GitHub 玩家的荣耀。

📝

Profile README 个人主页置顶

创建一个与你用户名同名的仓库(用户名/用户名),在里面放一个 README.md,它就会显示在你的个人主页顶部!可以展示:技能标签、当前在做什么、统计数据、博客链接等。

🏆

GitHub Achievements 成就徽章

GitHub 官方成就系统,完成特定任务获得徽章:
⭐ Starstruck —— 你的项目获得 16 个 Star
🍴 YOLO —— 没有 Code Review 就合并 PR
🐛 Pull Shark —— 合并了 2 个 PR
🏆 还有 Arctic Code Vault、Galaxy Brain 等隐藏成就

📢

Discussions 社区论坛

仓库的 Discussions 页面像一个迷你论坛:可分类(Q&A、想法、通知等)、可投票、可置顶。适合项目社区交流。

10 工具集成 · 让工作流更顺畅

GitHub 可以和开发工具深度整合,打造全自动工作流。

💻

VS Code 集成 最推荐

直接在 VS Code 中完成所有 Git 操作:
- 安装 GitHub Pull Requests 扩展
- 查看/创建 PR
- 行内评论
- 解决冲突
- 甚至从 VS Code 直接查看 GitHub Actions 运行状态

🖥️

GitHub CLI(gh)命令行神器

安装 GitHub CLI,在终端中操作 GitHub:
gh repo create —— 创建仓库
gh pr create —— 创建 PR
gh issue list —— 查看 Issues
gh repo clone 用户名/仓库 —— 克隆仓库

📱

GitHub 手机 App

iOS 和 Android 都有官方 App。你可以:
- 审查 PR
- 回复 Issues
- 查看代码
- 合并 PR(谨慎操作)
- 管理通知

🤖

GitHub Copilot AI 编程

在 VS Code / JetBrains 等编辑器中,Copilot 在你写代码时自动补全。后续还有 Copilot Chat(问答)和 Copilot for PRs(自动生成 PR 描述)。

🔗

第三方集成 Slack / Discord / Jira

GitHub 可以与许多工具联动:
- Slack / Discord:PR 通知
- Jira / Linear:项目对接
- Netlify / Vercel:自动部署
- Codecov / SonarCloud:代码质量

🔌

GitHub Apps / Webhooks

GitHub Apps 可以为仓库添加额外功能。Webhooks 在特定事件(Push、PR、Issue 等)发生时向你的服务器发送 HTTP 请求,实现自定义自动化。

📈

GitHub Copilot for PRs AI 审查

AI 自动为你的 PR 生成描述、识别潜在的 Bug、提出改进建议。还在不断进化中。

🔒

Dependabot 依赖自动更新

自动检测项目依赖是否有安全漏洞,自动创建 PR 来更新有问题的依赖。支持 npm、pip、Maven 等主流包管理器。

🛡️

CodeQL 安全扫描

GitHub 内置的安全分析工具,自动扫描代码中的安全漏洞(SQL 注入、XSS、硬编码密码等)。免费为公开仓库提供服务。

Stars 管理 星标收藏夹

你的所有 Star 在 github.com/stars/用户名 页面。支持按语言筛选、搜索、加标签分类(需要第三方工具)。

11 快捷键 · 效率翻倍

GitHub 内置了大量键盘快捷键——按下 ?Shift+/ 可以查看所有快捷键。

打开文件查找器 t
打开网页版 VS Code .
搜索仓库 /
转到 Issues g i
转到 Pull Requests g p
转到 Projects g b
转到 Wiki g w
转到 Actions g a
转到 Insights g i i
转到 Settings g s
转到通知 g n
提交编辑 Ctrl+Enter
切换行号 #(代码视图)
跳到指定行 Shift+#(代码视图)
选择多个文件 Shift+点击(文件列表)
开启快捷搜索 Shift+/

12 FAQ · 常见问题

新手最常问的问题,全部在这里解答。

GitHub 是免费的吗?
✅ 是的,个人使用完全免费!免费版包括:无限量的公开和私有仓库、2000 分钟/月的 Actions 运行时间、500MB 的 Packages 存储空间。付费版(Team/Enterprise)提供更多高级功能(如更高级的代码审查、合规功能),对大多数个人用户完全不需要。
我不会写代码,用 GitHub 有用吗?
非常有用!即使你不会写代码,GitHub 也可以:
— 存放和管理你的文档(用 Markdown 写作)
— 搭建免费的博客/网站(GitHub Pages)
— 下载和学习别人的项目
— 用 Issues 做任务管理
— 参与翻译类开源项目
— 学习技术写作和协作流程
不小心把密码提交到公开仓库了怎么办?
⚠️ 立即行动!
1️⃣ 立刻更改密码/密钥(去对应的网站重新生成)
2️⃣ 用 git rm --cached 从仓库移除文件
3️⃣ 建议强制删除 Git 历史中的敏感信息(使用 git filter-branch 或 BFG Repo-Cleaner)
4️⃣ 如果有推送,GitHub 可能已经检测到并通知你
✅ 重要的是:从 Git 历史中彻底清除(不仅仅是删文件),因为敏感的提交仍在历史里。
如何删除一个仓库?
Settings → Danger Zone → Delete this repository。输入仓库名确认。⚠️ 这个操作不可逆!删除后所有 Issues、PR、Wiki 全部丢失。如果只是想隐藏,可以改为私有(Private)。
什么是 Merge Conflict(合并冲突)?怎么解决?
当两个人同时修改了同一个文件的同一行代码时,Git 不知道该保留谁的——这叫做"冲突"。解决方式:
1️⃣ 用 git status 查看哪些文件有冲突
2️⃣ 打开冲突文件,你会看到:
<<<<<< HEAD
你的改动
=======
别人的改动
>>>>>> 分支名
3️⃣ 手动保留需要的代码,删除冲突标记
4️⃣ git addgit commit 完成解决
Fork 和 Clone 的区别是什么?
Fork:在 GitHub 网站上操作,把别人的仓库复制到你的 GitHub 账号下。Fork 后的仓库与原仓库有关联(可以提 PR)。
Clone:把 GitHub 上的仓库下载到你本地电脑。Clone 可以是自己的仓库,也可以是别人的。

✅ Fork 在云端创建一个副本,Clone 在本地创建一个副本。通常流程是:先 Fork,再 Clone 你的 Fork 到本地。
什么是 gitignore?为什么重要?
.gitignore 告诉 Git 哪些文件不需要跟踪(上传到 GitHub)。重要原因:
— 🚫 避免上传密码、密钥、Token
— 📦 避免上传第三方依赖(如 node_modules)
— ⚙️ 避免上传 IDE 配置文件
— 🖼️ 避免上传临时文件/日志
GitHub 创建仓库时提供了常用语言的 .gitignore 模板,可以直接选用。
怎么给开源项目做贡献?
不用一上来就写代码!开源贡献有多种方式:
修文档:修正拼写错误、补充使用说明
🐛 测试并报告 Bug:认真描述如何复现问题
💬 在 Issues 里帮助回答别人
🌍 翻译:把项目文档翻译成中文
🧪 写测试:提高项目代码质量
📝 完善 README:好的文档对项目非常重要
🔧 修复 Good First Issue:搜索 label:"good first issue"
我提交了 Commit,但想撤回怎么办?
分情况:
还没 Pushgit reset --soft HEAD~1(保留修改,撤销 Commit)或 git reset --hard HEAD~1(彻底撤销,慎用)
已经 Pushgit revert HEAD 创建一个"反向"提交,保留历史
如果 Push 到公共分支:不要用 reset,必须用 revert!因为 reset 会改写历史,别人已经 Pull 了你的代码就乱套了。
什么是 GitHub Gist?
Gist(gist.github.com)是一个轻量级的代码片段分享服务。你可以:
— 分享一段代码给别人看
— 存放常用的小脚本
— 做笔记(支持 Markdown)
— 创建秘密 Gist(只有知道链接的人能看到)
Gist 有自己的 Git 仓库,可以 Clone 到本地管理。
为什么我的仓库里没有绿色小方块(贡献图)?
几个可能原因:
1️⃣ 你没有登录 GitHub 时提交——Commit 的 author email 必须关联到 GitHub 账号
2️⃣ 你在私有仓库中提交——默认私有仓库的提交不显示在贡献图上,需要在贡献图设置里开启
3️⃣ 你 Fork 了别人的仓库——Fork 后的提交默认不显示
4️⃣ 你的提交在非默认分支——只有默认分支的提交算贡献
什么是 Git rebase?和 merge 的区别?
git merge:创建一个新的"合并提交",把两个分支的历史连接起来。保留了完整的历史,但会让分支图变复杂。
git rebase:把你的提交"移植"到另一个分支的顶端,使历史变成一条直线。更干净,但会改写历史。

常用原则:
— 公共分支(main)——用 merge,保持历史可追溯
— 自己的功能分支——用 rebase 让提交历史更整洁
如何在 README 里显示图标/徽章?
用 Shields.io 生成各种徽章:
![License](https://img.shields.io/github/license/用户名/仓库名)
![Stars](https://img.shields.io/github/stars/用户名/仓库名)
![Python](https://img.shields.io/badge/Python-3.11-blue)

Shields.io 提供上千种徽章:构建状态、测试覆盖率、代码质量、下载量……让你的 README 更专业。
如何把本地已有的项目上传到 GitHub?
# 在 GitHub 上先创建一个空仓库(不要勾选 README)

# 本地项目目录下
git init
git add .
git commit -m "initial commit"
git branch -M main
git remote add origin https://github.com/你的用户名/仓库名.git
git push -u origin main
GitHub 有没有容量限制?
有,但对个人使用很充裕:
— 每个仓库推荐不超过 1GB(硬限制 5GB)
— 单个文件最大 100MB(超限会警告)
— 超过 50MB 的文件建议用 Git LFS(大文件存储)
— Git LFS 免费额度:2GB 存储 + 1GB/月带宽
我想参与开源,但英语不好怎么办?
不要被英语吓倒!很多国内项目有中文社区:
— 搜索中文 Issue 或 Discussions
— Vue、Ant Design 等国内优秀项目全程中文
— 在项目 Issues 里用中文提问(大部分中国开发者接受中文)
— 国际项目也可以看中文翻译版文档
— 不过,提升英语对编程非常有用,建议逐步适应英文交流