3.4 Git & GitHub 从零开始完全指南
为什么你需要 Git 和 GitHub?
想象三个场景:
- 你写了一个产品,已经能跑了。然后你手贱改了一段代码,产品崩了。你想改回去,但你不记得之前那段代码长什么样了。
- 你和朋友一起做一个项目,两个人同时改了同一个文件,谁的版本算数?
- 你的电脑硬盘坏了,代码全没了。
这三个问题,Git 和 GitHub 全都帮你解决。
Git 和 GitHub 到底是什么?
存档系统 vs 云存档
把写代码想象成玩 RPG 游戏:
Git = 游戏自带的存档系统(本地)
你在打 boss 之前存了个档,打输了可以读档重来。你可以随时创建无数个存档,每个存档都有记录:什么时候存的、打到哪了、带了什么装备。Git 就是代码世界的本地存档——你在电脑上管理代码的版本,随时可以回到任何一个历史状态。
GitHub = 云存档服务(在线)
如果存档只存在你自己的游戏机上,机器坏了存档就没了。所以有了云存档——把存档同步到服务器上,换台设备也能接着玩。GitHub 就是代码的云存档平台。你的代码有了在线备份,别人也能看到你的项目、跟你协作。
一句话总结:Git 是你电脑上的存档工具,GitHub 是云端的保险箱。
它们各自能干什么?
| 功能 | Git(本地工具) | GitHub(在线平台) |
|---|---|---|
| 保存代码历史 | ✅ | ✅(同步过来) |
| 离线使用 | ✅ | ❌ 需要网络 |
| 多人协作 | 基础支持 | ✅ 完整支持 |
| 代码备份 | ❌ 只在你电脑上 | ✅ 云端安全 |
| 免费托管网站 | ❌ | ✅ GitHub Pages |
| 展示项目 | ❌ | ✅ 别人能访问 |
第一步:安装 Git
Mac 安装
打开终端(Terminal),输入:
git --version
如果没装过,Mac 会弹出提示框问你要不要安装开发者工具,点「安装」就行。装完后再输一次:
git --version
# 输出类似:git version 2.39.5
Windows 安装
- 打开 https://git-scm.com/download/win
- 下载安装包,一路「Next」用默认设置
- 安装完打开 Git Bash(一个终端工具),输入
git --version验证
Linux 安装
# Ubuntu / Debian
sudo apt update && sudo apt install git -y
# Fedora
sudo dnf install git -y
# 验证
git --version
# 输出:git version 2.43.0
第二步:首次配置(只需要做一次)
安装完 Git,先告诉它你是谁。这个信息会记录在你的每一次存档里。
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"
⚠️ 这里建议用你注册 GitHub 时用的邮箱,这样 GitHub 能识别你的提交。
验证配置:
git config --list
# 输出:
# user.name=你的名字
# user.email=你的邮箱@example.com
第三步:完整的工作流程(跟着做一遍)
我们从零开始,完整走一遍:创建项目 → 写代码 → 存档 → 推到 GitHub。
3.1 创建项目文件夹
mkdir my-first-project
cd my-first-project
pwd
# 输出:/Users/yourname/my-first-project
3.2 初始化 Git 仓库
git init
# 输出:Initialized empty Git repository in /Users/yourname/my-first-project/.git/
这个命令在文件夹里创建了一个隐藏的 .git 目录——这是 Git 的"存档数据库",不要手动修改它。
3.3 创建一个文件
echo "# 我的第一个项目" > README.md
cat README.md
# 输出:# 我的第一个项目
3.4 查看当前状态
git status
# 输出:
# On branch main
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
# README.md
# nothing added to commit but untracked files present
"Untracked files" 意思是:Git 发现了一个新文件 README.md,但它还没被纳入存档管理。
3.5 把文件放入暂存区
git add README.md
或者用 git add . 把所有改动都加入暂存区。暂存区就像"购物车"——你先把要存档的东西放进去,确认了再一起结算。
3.6 正式提交(存档)
git commit -m "第一次提交:创建 README"
# 输出:
# [main (root-commit) a1b2c3d] 第一次提交:创建 README
# 1 file changed, 1 insertion(+)
# create mode 100644 README.md
-m 后面的引号里是这次存档的说明。好的说明很重要——将来翻存档记录时一眼就知道每次改了啥。
3.7 在 GitHub 上创建远程仓库
- 打开 github.com,登录你的账号
- 点右上角
+→New repository - 名字填
my-first-project(跟本地文件夹同名比较好管理) - 不要勾选 "Add a README file"(本地已经有了)
- 点
Create repository
GitHub 会给你一个仓库地址,类似:https://github.com/你的用户名/my-first-project.git
3.8 把本地仓库和 GitHub 关联
git remote add origin https://github.com/你的用户名/my-first-project.git
origin 是给远程仓库起的别名,大家都叫它 origin,约定俗成。
3.9 推送到 GitHub
git push -u origin main
-u origin main 的意思是:以后默认推到 origin 的 main 分支,下次你只需要输 git push 就行了。
# 输出:
# Enumerating objects: 3, done.
# Counting objects: 100% (3/3), done.
# Writing objects: 100% (3/3), 230 bytes | 230.00 KiB/s, done.
# Total 3 (delta 0), reused 0 (delta 0)
# To https://github.com/你的用户名/my-first-project.git
# * [new branch] main -> main
刷新 GitHub 页面,你就能看到你的 README.md 文件了!
完整流程小结
mkdir 项目名 ← 创建文件夹
cd 项目名 ← 进入文件夹
git init ← 初始化仓库
← 写代码、创建文件...
git add . ← 把改动放入暂存区
git commit -m "说明" ← 正式存档
git remote add origin 地址 ← 关联 GitHub
git push -u origin main ← 推送上线
之后每次改完代码,重复 add → commit → push 这三步就行。
.gitignore:告诉 Git "别管这些文件"
有些文件不需要存档,比如依赖包、系统自动生成的文件、包含密码的配置文件。在项目根目录创建一个 .gitignore 文件:
touch .gitignore
然后在里面列出要忽略的文件/文件夹:
# 依赖包(几百MB,不需要提交)
node_modules/
# 系统文件
.DS_Store
Thumbs.db
# 环境变量(可能包含密码、API密钥,绝对不能提交!)
.env
.env.local
# 构建产物
dist/
build/
# 日志文件
*.log
常见模板可以直接去 github.com/github/gitignore 找,覆盖了几乎所有语言和框架。
🚨 安全提醒:
.env文件里通常存着 API 密钥、数据库密码等敏感信息。绝对不要把它提交到 GitHub 上,否则等于把密码公开展示。.gitignore里一定要加上.env。
分支:大胆尝试的安全网
分支就像平行宇宙。你在主宇宙(main 分支)里写了一个稳定版本的产品,然后开一个平行宇宙(新分支)去试验新功能。试验成功了就合并回主宇宙,失败了就删掉那个宇宙,主宇宙不受任何影响。
创建和切换分支
git branch new-feature # 创建一个叫 new-feature 的分支
git checkout new-feature # 切换到这个分支
# 或者用一条命令代替上面两行:
git checkout -b new-feature
# 输出:Switched to a new branch 'new-feature'
在分支上开发
现在你在 new-feature 分支上,随便改代码、随便折腾:
echo "这是一个新功能" >> app.js
git add .
git commit -m "添加新功能"
合并分支
新功能做完了,切回主分支,合并:
git checkout main # 切回主分支
git merge new-feature # 把新功能合并进来
删除分支
合并完没用了,删掉保持整洁:
git branch -d new-feature
# 输出:Deleted branch new-feature.
分支的日常使用场景
| 场景 | 用法 |
|---|---|
| 试一个不确定的新功能 | 创建分支试验 |
| 修一个 bug | 创建 fix-login-bug 分支 |
| 多人协作 | 每人一个分支,互不干扰 |
出事了怎么办?两个救命命令
场景一:代码改坏了,想撤销还没提交的改动
# 查看改了哪些文件
git status
# 输出:
# Changes not staged for commit:
# modified: app.js
# 撤销某个文件的改动,回到上次存档的状态
git checkout -- app.js
# 或者撤销所有改动
git checkout -- .
这相当于"读档"——回到上一次存档的状态,你做的改动全部消失。
场景二:想临时保存当前工作,切换到别的任务
# 正在写功能A,突然要紧急修 bug
git stash
# 输出:Saved working directory and index state WIP on main: a1b2c3d 上次提交
# 现在工作区干净了,去修 bug
git checkout -b fix-bug
# ... 修完 bug、提交 ...
# 切回来,恢复之前的工作
git checkout main
git stash pop
# 输出:On branch main
# Changes not staged for commit:
# modified: app.js
git stash 就像"临时存档"——把当前改动藏起来,之后再拿出来继续。
场景三:提交之后想反悔(回退到某次历史版本)
# 查看提交历史
git log --oneline
# 输出:
# f4e5d6c 第三次提交:加了按钮
# b2c3d4e 第二次提交:写了首页
# a1b2c3d 第一次提交:创建 README
# 回退到第二次提交(保留改动在暂存区,可重新提交)
git revert f4e5d6c
或者更暴力的重置(慎用!会丢失提交):
git reset --hard b2c3d4e
💡 新手安全法则:不确定的时候用
git revert,它是"安全回退"——创建一个新的提交来撤销之前的改动,不丢历史记录。git reset --hard是"暴力回退",会真正丢失提交,用之前确保你知道自己在做什么。
用 Cursor 管理 Git
Cursor 内置了完整的 Git 支持,不需要敲命令行。
查看改动
打开 Cursor 后,左边侧栏有一个 源代码管理 图标(分支形状的图标)。你改过的文件会列在那里,点进去能看到具体改了哪些行(红色是删的、绿色是加的)。
提交代码
- 在源代码面板里,点文件旁边的
+号,把文件加入暂存区 - 在顶部的输入框里写 commit message
- 点 ✓ Commit 按钮
推送和拉取
- 点左下角的 同步按钮(圆形箭头图标)来 push 和 pull
- 也可以在源代码面板的
...菜单里找到更多操作
创建和切换分支
左下角显示当前分支名,点击它可以创建新分支或切换分支。
用 Claude Code 管理 Git
Claude Code 的强大之处在于:你用自然语言跟它说就行。
你:帮我把代码提交一下
Claude Code:[自动执行 git add . && git commit -m "更新功能模块"]
你:推到 GitHub
Claude Code:[自动执行 git push origin main]
你:创建一个新分支叫 fix-header-bug
Claude Code:[自动执行 git checkout -b fix-header-bug]
你:看看最近的提交记录
Claude Code:[自动执行 git log --oneline -10]
Claude Code 理解你的意图,自动翻译成对应的 Git 命令。比你自己敲更快,而且不容易出错。
GitHub Pages:免费建一个网站
GitHub Pages 可以免费托管静态网站(HTML/CSS/JS),零成本上线一个作品集、个人主页或项目文档。
操作步骤
- 确保你的仓库里有
index.html
echo '<!DOCTYPE html>
<html>
<head><title>我的网站</title></head>
<body>
<h1>你好世界!这是我的第一个网站</h1>
<p>托管在 GitHub Pages 上,完全免费 🎉</p>
</body>
</html>' > index.html
git add .
git commit -m "添加首页"
git push
- 在 GitHub 上开启 Pages
进入你的仓库 → 点 Settings → 左侧栏找到 Pages → 在 Source 里选择 main 分支 → 点 Save
- 等一两分钟,页面顶部会出现你的网站地址:
https://你的用户名.github.io/my-first-project/
打开这个链接,你的网站就上线了!
进阶玩法
- 可以绑定自己的域名
- 支持 Jekyll 等静态网站生成器
- 很多开源的项目文档就是用 GitHub Pages 托管的
日常使用的命令速查表
# 查看状态(最常用的命令,随时敲)
git status
# 查看改动了什么
git diff
# 添加所有改动
git add .
# 提交
git commit -m "说明"
# 推送到 GitHub
git push
# 从 GitHub 拉取最新代码
git pull
# 查看提交历史
git log --oneline
# 创建并切换分支
git checkout -b 分支名
# 切回主分支
git checkout main
# 合并分支
git merge 分支名
# 临时保存当前工作
git stash
# 恢复临时保存的工作
git stash pop
总结
Git 和 GitHub 一开始可能觉得多余——"我就一个人写代码,干嘛这么麻烦?"但当你习惯了之后,你会发现它就像手机的自动备份功能一样,平时不觉得,出事的时候救命。
而且,几乎所有 AI 编程工具都深度集成了 Git。Cursor 有内置的 Git 面板,Claude Code 能直接执行 Git 命令。学会基本操作,你的 AI 工具才能帮你做更多的事。
花十分钟学会这些命令,受用一辈子。