什么是Git
Git:代码的时间机器
Git 是一个版本控制系统,用来记录文件的每一次修改。你可以把它想象成游戏里的存档功能——随时存档、随时读档、还能和队友各自存档后合并进度。
加载图表中...
为什么需要 Git?
没有 Git 的世界:
| 场景 | 没有 Git | 有 Git |
|---|---|---|
| 改崩了想回退 | 手动备份文件夹(v1、v2、v3…) | git checkout 一秒回到任何版本 |
| 多人协作 | 用微信发文件,互相覆盖 | 各自在分支上开发,合并时自动检测冲突 |
| 追踪改动 | 不知道谁改了什么 | git log 查看每次改动的时间、作者和说明 |
| 尝试新功能 | 怕改坏不敢动 | 开个分支随便试,不行就删掉 |
💡 Git 是本地工具,不需要联网就能使用。它和 GitHub 不是一回事——Git 是工具,GitHub 是平台。
Git 核心概念
三个工作区域
加载图表中...
- 工作目录:你正在编辑的文件所在的文件夹
- 暂存区:
git add后,文件进入"待提交"区域,相当于把信放进信封 - 本地仓库:
git commit后,修改被永久记录,相当于把信寄出去
commit 存档点
每次 git commit 会创建一个存档点,包含:
- 修改内容:具体改了哪些文件的哪些行
- 提交信息:一句话说明这次改了什么(如 "修复登录按钮不跳转的bug")
- 时间戳:什么时候提交的
- 作者:谁提交的
# 创建一个存档点
$ git commit -m "feat: 添加用户登录功能"
🎯 好的提交信息应该说清楚"做了什么",而不是"改了文件"。
fix: 修复首页白屏问题比修改了代码好得多。
branch 分支
分支是 Git 最强大的功能之一。它让你可以在不影响主线代码的情况下开发新功能:
加载图表中...
- main(主分支):稳定的代码,随时可以上线
- feature(功能分支):开发新功能的平行世界
- 功能开发完成后,通过 merge 合并回主分支
Git 常用命令速查
# 初始化一个 Git 仓库
$ git init
# 查看文件修改状态
$ git status
# 查看具体改了什么
$ git diff
# 添加文件到暂存区
$ git add . # 添加所有修改
$ git add index.html # 添加指定文件
# 创建存档点
$ git commit -m "提交说明"
# 查看提交历史
$ git log
# 创建并切换到新分支
$ git branch feature # 创建分支
$ git checkout feature # 切换分支
$ git checkout -b feature # 创建并切换(合二为一)
# 合并分支
$ git checkout main # 先切回主分支
$ git merge feature # 把 feature 合并过来
# 连接远程仓库
$ git remote add origin https://github.com/user/repo.git
$ git push # 推送到远程
$ git pull # 从远程拉取
Git 安装
| 系统 | 安装方式 |
|---|---|
| macOS | 打开终端输入 git --version,会自动提示安装 |
| Windows | 下载 Git for Windows 安装包 |
| Linux | sudo apt install git(Ubuntu)或 sudo yum install git(CentOS) |
安装后首次使用需要设置身份:
$ git config --global user.name "你的名字"
$ git config --global user.email "你的邮箱"
.gitignore 文件
有些文件不应该被 Git 追踪(如密钥、依赖包、临时文件)。创建 .gitignore 文件来告诉 Git 忽略它们:
# 忽略 node_modules 目录(依赖包太大了)
node_modules/
# 忽略环境变量文件(包含密钥)
.env
.env.local
# 忽略系统文件
.DS_Store
🎯 AI编程小贴士:AI 生成的项目通常会自动创建
.gitignore。如果没有,记得让 AI 帮你补上——把node_modules和.env提交到 Git 是新手常犯的错误。
小结
- Git 是版本控制工具,记录代码的每一次修改
- 三个核心操作:
add(暂存)→commit(存档)→push(推送) - 分支让你可以安全地尝试新功能,不怕改坏主线
- Git 是本地工具,GitHub 是基于 Git 的在线平台
- 养成频繁 commit 的习惯,每完成一个小功能就存档一次