GitHub 是什么
GitHub 是全球最大的代码托管平台,基于 Git 版本控制系统。你可以把它理解为「程序员的网盘 + 社区」:把代码存上去、分享给别人、一起协作修改,每一次改动都有记录、随时能回退。
先分清两个容易混淆的概念:
- Git:一个运行在你电脑上的命令行工具,负责记录文件的每次修改(版本控制)。
- GitHub:一个网站,把 Git 管理的仓库放到云端,再加上协作、讨论、展示等社区功能。
常见用途:备份代码、参与开源项目、展示个人作品(简历)、团队协作开发、托管免费网站。
完全不需要会写代码也能用 GitHub——很多人用它写笔记、放文档、做个人主页。这个教程里的操作全部通用。
准备工作
第一步:注册账号。打开 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,粘贴公钥保存即可。
核心概念
GitHub 的世界由几个基本概念组成,看懂这张图就懂了一大半:
仓库 Repository
一个项目文件夹,包含代码、文档和完整的修改历史。通常一个项目 = 一个仓库。
提交 Commit
对当前文件拍一张「快照」,配一句说明。快照连成时间线,随时可以回到过去。
分支 Branch
从时间线上分出的一条平行线,在里面随便改,不影响主线,改完再合并回去。
拉取请求 Pull Request
「我改好了,请审查并合并到主仓库」。是团队讨论代码、合并改动的核心方式。
它们的关系可以这样理解:你在仓库里修改文件,把改动打包成一个提交;为了不干扰别人,你在分支上操作;改完之后发起一个拉取请求,请大家审查、合并进主线。
还有一个词叫 fork:把别人的仓库复制一份到自己账号下,随便改不影响原仓库,改完用 Pull Request 反哺原项目——这就是参与开源的标准姿势。
创建第一个仓库
在网页上创建:登录 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(开源协议,决定别人能怎么使用你的代码)。
日常工作流程
无论是个人项目还是团队协作,每天的节奏基本都是这七步:
对应到具体命令(以开发一个新功能为例):
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 已经展示了改动内容,说明动机才帮得上未来的自己。
分支操作
分支是 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 分支习惯上保持「随时可用」的状态,所有新工作都在功能分支上进行——这是最基本也最重要的分支习惯。
Issue 与协作
Issue(议题)是仓库的留言板:报告 bug、提新功能建议、提问讨论。进入仓库页的 Issues 标签 → New issue 就能创建。提交 Issue 时尽量说清楚三件事:期望什么、实际发生了什么、如何重现(最好附截图)。
给别人的项目贡献代码(开源协作的标准流程):
- 在对方仓库点 Fork,把仓库复制到自己账号下
git clone你的 fork 到本地,新建分支修改代码- 推送分支,在自己的 fork 页面发起 PR,方向是「你的 fork 分支 → 原仓库」
- 等待维护者审查;可能被要求修改,继续在分支上提交即可,PR 自动更新
Review(代码审查)礼仪:评论对事不对人;提建议时说清理由;别人给你留了评论要回应;合并前自己先浏览一遍完整 diff。
很多开源项目有 CONTRIBUTING.md(贡献指南),给项目提交 PR 前先读一遍,能少走很多弯路。
实用功能
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
命令速查表
把这张表存起来,忘了就翻一眼:
| 命令 | 作用 |
|---|---|
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 确认状态,避免误删没提交的工作。
动手小测
五道小题,检验一下学习成果:
已答 0 / 5 题