跳到主要内容

3.4 Git & GitHub 从零开始完全指南

为什么你需要 Git 和 GitHub?

想象三个场景:

  1. 你写了一个产品,已经能跑了。然后你手贱改了一段代码,产品崩了。你想改回去,但你不记得之前那段代码长什么样了。
  2. 你和朋友一起做一个项目,两个人同时改了同一个文件,谁的版本算数?
  3. 你的电脑硬盘坏了,代码全没了。

这三个问题,GitGitHub 全都帮你解决。


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 安装

  1. 打开 https://git-scm.com/download/win
  2. 下载安装包,一路「Next」用默认设置
  3. 安装完打开 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 上创建远程仓库

  1. 打开 github.com,登录你的账号
  2. 点右上角 +New repository
  3. 名字填 my-first-project(跟本地文件夹同名比较好管理)
  4. 不要勾选 "Add a README file"(本地已经有了)
  5. 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 后,左边侧栏有一个 源代码管理 图标(分支形状的图标)。你改过的文件会列在那里,点进去能看到具体改了哪些行(红色是删的、绿色是加的)。

提交代码

  1. 在源代码面板里,点文件旁边的 + 号,把文件加入暂存区
  2. 在顶部的输入框里写 commit message
  3. ✓ 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),零成本上线一个作品集、个人主页或项目文档。

操作步骤

  1. 确保你的仓库里有 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
  1. 在 GitHub 上开启 Pages

进入你的仓库 → 点 Settings → 左侧栏找到 Pages → 在 Source 里选择 main 分支 → 点 Save

  1. 等一两分钟,页面顶部会出现你的网站地址:
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 工具才能帮你做更多的事。

花十分钟学会这些命令,受用一辈子。