第二章:Git入门——从零开始搭建你的版本控制世界
各位工程师,欢迎来到Git入门这一章。说实话,Git这东西,我刚入行时也觉得挺玄乎的。那时候我还在做嵌入式固件开发,代码改来改去,最后分不清哪个版本是能用的。直到有一次,我把一个调试好的剃须刀马达控制程序改崩了,却找不到回退的办法……嗯,从那以后,我老老实实学了Git。
今天我们就从最基础的东西讲起。你不需要有任何Git基础,跟着我一步步来就行。
2.1 Git的安装与配置
先说说安装。Git支持Windows、macOS和Linux。我个人习惯在Windows上用Git Bash,在Linux上直接用终端。
Windows安装:
- 去Git官网下载安装包,一路默认选项就行
- 安装完成后,右键菜单里会出现"Git Bash Here"
- 我建议勾选"将Git添加到PATH环境变量"
Linux安装:
sudo apt-get install git # Ubuntu/Debian
sudo yum install git # CentOS/RHEL
macOS安装:
brew install git # 用Homebrew安装
装好之后,第一件事就是配置你的身份信息。这很重要,因为每次提交代码都会记录你是谁。
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
💡 我个人习惯用公司邮箱,这样提交记录里能清楚看到是谁改的代码。曾经有个同事用了私人邮箱,后来查bug时根本对不上人,那叫一个头疼。
配置完成后,可以用下面命令查看所有配置:
git config --list
你还可以设置默认的文本编辑器,比如我习惯用VSCode:
git config --global core.editor "code --wait"
2.2 Git工作区与仓库的概念
理解Git的工作区概念,是入门的关键。说白了,Git把我们的项目分成了三个区域:
| 区域名称 | 说明 | 类比 |
|---|---|---|
| 工作区(Working Directory) | 你电脑上能看到的文件夹 | 你的工作台 |
| 暂存区(Staging Area) | 临时存放待提交的修改 | 你的待办清单 |
| 仓库(Repository) | Git保存所有历史版本的地方 | 你的档案柜 |
为什么会这样设计?你想想看,如果你每次改一个文件都要立刻存档,那多麻烦。Git给了你一个缓冲地带——暂存区。你可以先改一堆文件,挑出那些改好了的、想提交的,放到暂存区,最后一次性提交到仓库。
🔑 核心理解:工作区是你正在修改的地方,暂存区是你准备提交的地方,仓库是永久保存的地方。
我在项目中遇到过这样的情况:一个同事改了好几个文件,结果不小心把没改完的代码也提交了。后来我教他先用git add把改好的文件挑出来,再提交。从那以后,他再也没犯过这种错。
2.3 Git基本操作
好,现在我们来动手。假设你有一个剃须刀嵌入式软件项目,文件夹名叫shaver_firmware。
2.3.1 git init —— 初始化仓库
进入你的项目文件夹,执行:
cd shaver_firmware
git init
这条命令会在当前目录下创建一个隐藏的.git文件夹。这个文件夹就是你的仓库。嗯,这里要注意:.git文件夹千万别乱删,否则你的版本历史就全没了。
⚠️ 我曾经见过有人把.git文件夹当成垃圾删掉了,结果整个项目的版本历史全部丢失。切记:.git是Git的心脏。
2.3.2 git status —— 查看当前状态
初始化完成后,你可以随时用git status查看当前工作区的状态:
git status
它会告诉你:哪些文件被修改了,哪些文件还没被跟踪,哪些文件在暂存区里。我几乎每改几个文件就会跑一次git status,就像看仪表盘一样。
2.3.3 git add —— 把文件加入暂存区
假设你新建了一个main.c文件,想把它纳入版本管理:
git add main.c
你也可以一次性添加所有修改过的文件:
git add .
但我个人建议,刚开始学的时候,一个一个加。为什么?因为git add .会把所有改动都加进去,万一你有个临时测试文件,也会被加进去。我曾经有一次不小心把编译生成的.o文件也加进去了,后来仓库变得特别大。
💡 避坑指南:我建议在项目根目录创建一个.gitignore文件,把编译产物、临时文件等写进去。这样git add .就不会误加这些文件了。
2.3.4 git commit —— 提交到仓库
文件加到暂存区后,就可以提交了:
git commit -m "添加了马达控制模块的初始代码"
-m后面跟的是提交信息。这个信息很重要,它记录了这次提交做了什么。我见过有人写"修改了一些东西"或者"fix bug",这种信息等于没写。你想想看,三个月后你回来看这段历史,能想起来改了啥吗?
🔑 好的提交信息格式:动词 + 修改内容 + 原因(可选)
例如:"修复了马达PWM频率计算错误,导致转速不稳定的问题"
如果你不加-m,Git会打开默认编辑器让你写多行提交信息。我习惯用这种方式写更详细的说明:
git commit
然后编辑器里会显示:
# 请为你的变更输入提交说明。以 '#' 开始的行将被忽略。
# 空提交说明将会终止提交。
你可以写多行,第一行是标题,空一行后写详细说明。
2.3.5 完整的操作流程
把上面几个命令串起来,就是一个完整的Git工作流:
# 1. 初始化仓库
git init
# 2. 查看状态
git status
# 3. 添加文件到暂存区
git add main.c
git add motor_control.c
# 4. 再次查看状态,确认暂存区内容
git status
# 5. 提交到仓库
git commit -m "添加了马达控制和主循环模块"
这个流程,说白了就是:改代码 → 挑出要提交的 → 写个说明 → 存档。我每天要重复这个流程几十次,已经形成肌肉记忆了。
2.4 避坑指南与个人经验
最后,分享几个我踩过的坑:
- 不要用
git commit -a偷懒:这个命令会跳过暂存区,直接提交所有修改。但如果你有不想提交的文件,就麻烦了。我建议老老实实走add+commit两步。 - 提交要频繁,但要有意义:每完成一个功能点就提交一次,不要攒了一堆改动才提交。这样回退时能精确到某个小改动。
- 提交信息要写中文:团队里大家都用中文,就别装洋气写英文了。清晰易懂最重要。
⚠️ 我曾经犯过一个低级错误:在git commit之后,发现漏了一个文件,就直接修改了那个文件,然后以为它会被包含在上次提交里。结果并没有。正确的做法是:git add漏掉的文件,然后用git commit --amend把修改合并到上一次提交中。
好了,Git入门的内容就讲到这里。下一章我们会深入讲分支管理,那才是Git真正强大的地方。你先把这个基础流程练熟,每天用几次,一周后你就会发现——没有Git的日子简直没法干活。