教程
🛠️

开发工具

Git、VS Code、终端与效率工具使用指南。

Git 入门:给代码买一份"后悔药"和"协作中枢"

从"版本控制到底是什么"讲起,搞懂 Git 的安装、全局配置、仓库初始化,以及工作区/暂存区/版本库三层结构,配能直接抄的命令。

· 更新于 2026-07-20 阅读量 --

写代码最怕两件事:改着改着把能跑的版本改崩了,却找不到回去的路;或者和同事同时改一个文件,最后谁的代码被覆盖都搞不清。Git 就是来解决这两个痛点的——它像给代码装了一个”时间机器”,又像一个”多人共编的合并器”。

你可以把 Git 想成文档的”无限次撤销键”加”自动备份云”。每次你觉得”这版不错”,就拍一张快照存起来;以后任何时候想回到某一张快照,一条命令就能还原。多人协作时,每个人的快照还能智能合并,不会互相踩脚。

什么是版本控制

版本控制(Version Control) 就是记录文件每次变化的系统。没有它,你可能会看到这样的文件夹:报告最终版.doc报告最终版2.doc报告真的最终版.doc报告改不动了.doc——这叫”人肉版本控制”,既乱又容易丢。

Git 是当下最主流的分布式版本控制系统。分布式意味着:每个人的电脑上都有一份完整的仓库副本(包括全部历史),不依赖某个中央服务器也能工作。哪怕服务器炸了,随便一个人的电脑都能恢复全部历史。

第一步:安装 Git

不同系统装法不同,但都很简单:

# macOS(装了 Homebrew 的话)
brew install git

# Ubuntu / Debian
sudo apt update && sudo apt install git

# Windows:去 git-scm.com 下载安装包,一路下一步即可

装完验证一下:

git --version
# 输出类似 git version 2.45.0 就说明装好了

第二步:第一次配置(只做一次)

Git 每次提交都会记下”谁提交的”。所以第一次要先告诉它你的名字和邮箱:

git config --global user.name "你的名字"
git config --global user.email "you@example.com"

--global 表示这是全局配置,对这台电脑上所有仓库生效。如果某个项目想用不同的身份,进到那个仓库目录,把 --global 换成 --local 再设一次即可。

还可以顺手设置默认分支名和喜欢的编辑器:

git config --global init.defaultBranch main
git config --global core.editor "code --wait"   # 用 VS Code 当提交信息编辑器

第三步:理解三个区域(核心认知)

Git 最关键的认知是三个区域,很多新手绕晕就是没搞懂这个:

  1. 工作区(Working Directory):你当前能看到、正在编辑的文件夹。你 git init 之后,在这个目录里新建、修改的文件都先待在这里。
  2. 暂存区(Staging Area / Index):一个”待提交清单”。你把工作区里想保存的改动 add 进来,相当于告诉 Git”这些改动我确认要存档”。
  3. 版本库(Repository / .gitgit commit 之后,暂存区的内容被永久拍成一张快照,存进这里。.git 文件夹就是仓库的”大脑”,千万别手删。

一个好懂的比喻:工作区是厨房(正在切菜备料),暂存区是装盘(把做好的菜摆上盘),版本库是拍照留念(把这一桌菜拍下来存相册)。你不会每切一刀就拍张照,而是菜备好了、装好盘,才统一拍一张。

第四步:初始化仓库

进入你的项目目录,初始化:

cd my-project
git init
# 输出:Initialized empty Git repository in .../.git/

这条命令就在当前目录建了一个 .git 文件夹,仓库就建好了。此时它还是空的,没有任何快照。

第五步:看看现在什么状态

git status

它会告诉你:哪些文件被改了(在工作区)、哪些已放进暂存区待提交。新手养成习惯——做任何 Git 操作前后都 git status 看一眼,能避免绝大多数误操作。

常见新手坑

  • 忘了 git config 就提交:Git 会报错或用默认身份,导致提交记录作者不对。
  • .git 当普通文件夹乱删:那是仓库历史,删了就回不到任何历史版本了。
  • 在错误目录 git init:可能在桌面或家目录初始化了仓库,导致满屏文件都被 Git 跟踪。用 git status 确认当前目录再操作。
  • 以为 git init 会自动保存文件:它只是建了仓库,文件还在工作区,需要 add + commit 才进版本库。

小测验

  • 问题1:分布式版本控制和集中式最大的区别是什么?答案:每个人本地都有完整历史,不依赖中央服务器也能工作。
  • 问题2:git config --global--local 有什么区别?答案:前者对整台电脑所有仓库生效,后者只对当前仓库生效。
  • 问题3:工作区的文件改了,但还没 addgit status 会把它归到哪一类?答案:归到”未暂存(not staged)“的修改里。

更多实战:从零走一遍完整闭环

光看不练记不牢,我们来真的走一遍。打开终端,建个练习目录:

mkdir git-practice && cd git-practice
git init
echo "# 我的练习仓库" > README.md
git status            # README.md 显示为未跟踪(红色)
git add README.md     # 加入暂存区
git commit -m "chore: 初始化项目说明"
git log --oneline     # 看到刚才那条提交

走完这四步,你就完成了”初始化 → 暂存 → 提交 → 查看”的完整闭环。以后每篇提到的命令,都建议这样当场敲一遍,比读十遍记得牢。

图形化工具:命令行之外的解法

如果你暂时抗拒命令行,也有图形工具能做同样的事:

  • GitHub Desktop:官方出品,界面友好,提交、分支、合并点点鼠标就行,适合纯新手过渡。
  • VS Code 内置 Git:左侧”源代码管理”视图,改动、提交、推送都能在编辑器里完成(前面编辑器篇讲过)。
  • SourceTree:功能全面的免费 Git 客户端。

但要提醒:图形工具底层还是 Git 那套概念(暂存区、提交、分支)。先理解命令行逻辑,再用图形工具,才不会被它”自动帮你做决定”搞晕——很多”莫名其妙的合并”正是图形工具替你做了你没意识到的操作。

自测:你真的懂了吗

  • 为什么 git init 后文件不会自动进版本库?答案:文件还在工作区,必须 add 进暂存区再 commit 才进版本库。
  • 三个区域各自管什么?答案:工作区编辑中、暂存区待提交清单、版本库永久快照。
  • 如果误删了工作区还没提交的文件,能从 Git 恢复吗?答案:不能,因为从未提交过;所以改动要及时提交。

常见认知误区

新手对 Git 有几个典型误会,提前说清能少走弯路。第一,以为 git init 会自动保存文件——其实它只建仓库,文件仍在工作区,必须 add 加进暂存区、commit 才进版本库,漏了任何一步都回不去。第二,以为提交是给单个文件拍快照——其实一次 commit 是对”整个暂存区当前状态”拍一张整体照,所以提交前要想清楚这次该包含哪些改动。第三,以为 Git 能防误删——对于从未提交过的文件,删了就是删了,Git 救不了,所以改动养成及时提交的习惯。第四,以为分支很重——Git 的分支只是个轻量指针,开几十条也不占多少空间,放心用,别舍不得开。

这一篇你该记住的

  • Git 是分布式版本控制,给代码提供”撤销/回溯”和”多人协作合并”两大能力。
  • 三个区域:工作区(编辑中)→ 暂存区(待提交清单)→ 版本库(永久快照)。
  • 首次使用先 git config --global user.name/email
  • git init 初始化仓库,git status 随时查看状态。
  • 提交前必须 add 到暂存区,再 commit 才进版本库。

下一篇我们讲 提交:怎么把改动真正存进版本库、怎么写让人看得懂的提交说明、怎么回看历史——这是你每天都会用到的动作。