Learn by doing

GitHub,
一步步上手。

从注册账号到创建仓库、提交代码、发起 Pull Request——不需要任何基础,跟着做一遍就能学会。

第 1 章

GitHub 是什么

GitHub 是全球最大的代码托管平台,基于 Git 版本控制系统。你可以把它理解为「程序员的网盘 + 社区」:把代码存上去、分享给别人、一起协作修改,每一次改动都有记录、随时能回退。

先分清两个容易混淆的概念:

  • Git:一个运行在你电脑上的命令行工具,负责记录文件的每次修改(版本控制)。
  • GitHub:一个网站,把 Git 管理的仓库放到云端,再加上协作、讨论、展示等社区功能。

常见用途:备份代码、参与开源项目、展示个人作品(简历)、团队协作开发、托管免费网站。

💡

完全不需要会写代码也能用 GitHub——很多人用它写笔记、放文档、做个人主页。这个教程里的操作全部通用。

第 2 章

准备工作

第一步:注册账号。打开 github.com,点击右上角 Sign up,用邮箱注册一个免费账号。用户名以后会出现在你的仓库地址里(github.com/用户名/仓库名),建议认真起一个。

第二步:安装 Git。GitHub 是网站,Git 是工具。在终端里验证是否已安装:

终端
git --version

没有安装的话,按系统安装:

  • macOS:终端会自动提示安装,或用 brew install git
  • Windows:到 git-scm.com 下载安装包,一路下一步即可

第三步:配置身份。安装后先告诉 Git 你是谁(这个名字会记录在每次提交里):

终端
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
⚠️

邮箱建议和 GitHub 注册邮箱一致,这样你的提交才会关联到你的 GitHub 头像和个人主页。

第四步(可选):配置 SSH 密钥。配置一次后,之后推送代码不再需要每次输密码:

终端
ssh-keygen -t ed25519 -C "你的邮箱"   # 一路回车即可
cat ~/.ssh/id_ed25519.pub          # 复制输出内容

然后在 GitHub 网页上进入 Settings → SSH and GPG keys → New SSH key,粘贴公钥保存即可。

第 3 章

核心概念

GitHub 的世界由几个基本概念组成,看懂这张图就懂了一大半:

📦

仓库 Repository

一个项目文件夹,包含代码、文档和完整的修改历史。通常一个项目 = 一个仓库。

📸

提交 Commit

对当前文件拍一张「快照」,配一句说明。快照连成时间线,随时可以回到过去。

🌿

分支 Branch

从时间线上分出的一条平行线,在里面随便改,不影响主线,改完再合并回去。

🤝

拉取请求 Pull Request

「我改好了,请审查并合并到主仓库」。是团队讨论代码、合并改动的核心方式。

它们的关系可以这样理解:你在仓库里修改文件,把改动打包成一个提交;为了不干扰别人,你在分支上操作;改完之后发起一个拉取请求,请大家审查、合并进主线。

💡

还有一个词叫 fork:把别人的仓库复制一份到自己账号下,随便改不影响原仓库,改完用 Pull Request 反哺原项目——这就是参与开源的标准姿势。

第 4 章

创建第一个仓库

在网页上创建:登录 GitHub,点击右上角 + → New repository:

  • Repository name:仓库名,比如 my-first-repo
  • Public / Private:公开(任何人可见)或私有(只有你和协作者可见)
  • 勾选 Add a README file——README 是仓库的「门面」,打开仓库首页显示的就是它

点击 Create repository,你的第一个仓库就诞生了。接下来把它下载到本地并做第一次提交:

终端
git clone https://github.com/用户名/my-first-repo.git   # 下载仓库到本地
cd my-first-repo                                         # 进入仓库目录
echo "# 我的第一个仓库" >> README.md                    # 修改一个文件
git add README.md                                        # 把改动加入暂存区
git commit -m "更新 README"                               # 提交快照
git push origin main                                     # 推送到 GitHub

刷新 GitHub 页面,你会看到改动已经同步上去了。🎉

💡

每个仓库通常还有两个常见文件:.gitignore(列出不想上传的文件,如密码、日志)和 LICENSE(开源协议,决定别人能怎么使用你的代码)。

第 5 章

日常工作流程

无论是个人项目还是团队协作,每天的节奏基本都是这七步:

拉取 最新代码→ 建分支→ 修改文件→ 提交→ 推送分支→ 发 PR→ 合并

对应到具体命令(以开发一个新功能为例):

终端
git pull origin main                        # 1. 拉取最新代码
git switch -c feature-login                 # 2. 新建并切换到功能分支
# 3. ……编辑代码……
git add .                                   # 4. 暂存全部改动
git commit -m "实现登录页面"                 #    提交
git push origin feature-login               # 5. 推送分支到 GitHub

推送后,打开 GitHub 仓库页面,会看到一条黄色横幅提示 Compare & pull request,点击它:

  • 填写标题和描述,说清楚改了什么、为什么改
  • 点击 Create pull request 发起 PR
  • 协作者审查(review)代码、留评论;你根据反馈继续提交,PR 会自动更新
  • 讨论通过后点击 Merge pull request 合并进主线
💡

提交信息写清楚「为什么」比「改了什么」更重要——diff 已经展示了改动内容,说明动机才帮得上未来的自己。

第 6 章

分支操作

分支是 Git 最强大的功能。常用操作一表看懂:

终端
git branch                    # 查看本地所有分支(* 号是当前分支)
git switch -c new-idea        # 新建并切换到 new-idea 分支
git switch main               # 切回主分支
git merge new-idea            # 把 new-idea 的改动合并进当前分支
git branch -d new-idea        # 删除已合并的本地分支
git push origin --delete new-idea   # 删除远程分支

遇到冲突怎么办?合并时如果两个人改了同一行,Git 会停下来报 CONFLICT。打开冲突文件,找到这样的标记:

冲突文件
<<<<<<< HEAD
你这边的内容
=======
对方分支的内容
>>>>>>> new-idea

决定保留哪一版(或手动融合两版),删掉这些标记,然后 git add 文件 再 git commit,冲突就解决了。

💡

main 分支习惯上保持「随时可用」的状态,所有新工作都在功能分支上进行——这是最基本也最重要的分支习惯。

第 7 章

Issue 与协作

Issue(议题)是仓库的留言板:报告 bug、提新功能建议、提问讨论。进入仓库页的 Issues 标签 → New issue 就能创建。提交 Issue 时尽量说清楚三件事:期望什么、实际发生了什么、如何重现(最好附截图)。

给别人的项目贡献代码(开源协作的标准流程):

  1. 在对方仓库点 Fork,把仓库复制到自己账号下
  2. git clone 你的 fork 到本地,新建分支修改代码
  3. 推送分支,在自己的 fork 页面发起 PR,方向是「你的 fork 分支 → 原仓库」
  4. 等待维护者审查;可能被要求修改,继续在分支上提交即可,PR 自动更新

Review(代码审查)礼仪:评论对事不对人;提建议时说清理由;别人给你留了评论要回应;合并前自己先浏览一遍完整 diff。

💡

很多开源项目有 CONTRIBUTING.md(贡献指南),给项目提交 PR 前先读一遍,能少走很多弯路。

第 8 章

实用功能

🌐

GitHub Pages

免费静态网站托管。仓库 Settings → Pages 开启后,用户名.github.io/仓库名 就是你的网站地址。

🤖

GitHub Actions

自动化流水线:推送代码时自动测试、构建、部署。在 .github/workflows/ 下写配置文件即可。

📋

Projects

看板式项目管理,把 Issue 和 PR 像便利贴一样拖进「待办 / 进行中 / 完成」。

📎

Gist

快速分享单段代码或笔记:gist.github.com,适合贴配置、报错日志给朋友看。

另一个超实用的技巧是搜索:在 GitHub 首页搜索框输入关键词后,可以用过滤器精确定位,例如想找一个用 JavaScript 写的、500 星以上的 todo 项目,搜索:

搜索语法
todo language:javascript stars:>500
第 9 章

命令速查表

把这张表存起来,忘了就翻一眼:

命令作用
git clone 地址把远程仓库完整下载到本地
git status查看当前有哪些改动(最常敲的命令)
git add 文件 / git add .把改动加入暂存区,准备提交
git commit -m "说明"把暂存的改动打包成一次提交
git push origin 分支把本地提交上传到 GitHub
git pull拉取并合并远程最新改动(push 前先 pull)
git log --oneline一行一条地查看提交历史
git diff查看文件具体改了哪些内容
git switch 分支切换分支
git switch -c 新分支新建并切换分支
git merge 分支把指定分支合并进当前分支
git restore 文件放弃某文件未暂存的修改(谨慎)
git revert 提交号生成一个「反向提交」撤销某次改动,安全
git reset --hard 提交号强制回退到某提交(会丢弃之后的改动,慎用)
⚠️

实验性操作(reset、restore)前,先用 git log --oneline 和 git status 确认状态,避免误删没提交的工作。

第 10 章

动手小测

五道小题,检验一下学习成果:

已答 0 / 5 题