Git 基础概念
版本控制与仓库直觉。
Git 基础概念
这一课你将能做到
- 用一句话说清 Git 是什么、解决什么问题,并解释「版本控制」的真实含义
- 在本机安装 Git、完成身份配置(user.name / user.email),并用
git --version验证 - 讲清 Git 的三大区域(工作区、暂存区、仓库)以及文件在它们之间的流转
为什么要学
想象你写论文:改一版存一份「论文v1.docx」「论文v2.docx」「论文最终版.docx」「论文最终版真的不改了.docx」……一周后你自己都分不清哪份是哪份。代码比论文严重得多:多人同时改同一个文件、要回滚到上周能跑的版本、要知道某行代码是谁什么时候为什么改的。版本控制系统(VCS)就是干这个的。
Git 是目前事实上的唯一标准:Linux 内核、Spring、Vue、你公司的项目、本站 java-nav 的代码,全部托管在 Git 上。不会 Git 就没法参与任何现代团队协作,面试第一关就过不去。学会 Git 的回报是终身的——它是程序员最重要的工具,没有之一。
先建立图像
Git 的核心心智模型是三大区域 + 一条提交历史链:
工作区 (Working Directory) 暂存区 (Staging Area) 本地仓库 (Repository)
┌──────────────────┐ add ┌──────────────────┐ commit ┌──────────────────┐
│ 你正在编辑的文件 │ ──────> │ 准备打包的改动清单 │ ─────> │ 永久的版本快照 │
│ UserService.java │ │ UserService.java │ │ commit a1b2c3 │
│ index.html │ <────── │ │ <───── │ commit d4e5f6 │
└──────────────────┘ restore └──────────────────┘ reset └──────────────────┘
提交历史是一条链,每个 commit 有一个唯一哈希(如 a1b2c3d),指向它的「父亲」:
HEAD -> main
A(初始提交) <- B(加登录) <- C(修bug) <- D(加缓存)
理解这张图,后面所有命令(add / commit / reset / restore / switch)都只是在这三个区域之间搬动文件。
跟着做
步骤 1:安装 Git 并验证
Windows 去 git-scm.com 下载安装包,一路下一步即可。macOS 用 brew install git,Linux 用发行版包管理器。装完打开终端:
git --version
# git version 2.45.0.windows.1 ← 看到版本号即成功
步骤 2:配置身份(全局只需一次)
Git 会把作者信息写进每条 commit,必须先配置:
git config --global user.name "Zhang San"
git config --global user.email "zhangsan@example.com"
git config --global init.defaultBranch main
git config --list
--list 能回显你的配置,确认 name/email 没写错。邮箱建议和 GitHub 账号一致,这样提交头像能正确显示。
步骤 3:创建第一个仓库
mkdir git-demo && cd git-demo
git init
# Initialized empty Git repository in .../git-demo/.git/
git init 在当前目录生成隐藏的 .git/ 文件夹——这就是「本地仓库」,里面存了所有历史。删掉它,这个目录就退回普通文件夹。
步骤 4:感受三大区域
echo "hello git" > README.md
git status
# Untracked files: README.md ← 在工作区,Git 还没跟踪
git add README.md
git status
# Changes to be committed: new file: README.md ← 进了暂存区
git commit -m "初始提交:添加 README"
git status
# nothing to commit, working tree clean ← 进了仓库,工作区干净