第3章:版本控制入门:Git安装与配置、Git基本工作流、Git常用命令实战
好,咱们正式开始接触版本控制。说实话,在我刚入行做嵌入式那会儿,版本控制还是个「奢侈品」。那时候大家传代码靠U盘,文件名后面跟着_v1、_v2、_final、_final2……现在想想,那简直是噩梦。直到有一次,我把一个调试了三天的驱动文件覆盖错了,整个项目回退不了,差点没赶上交付。从那以后,我就彻底成了Git的忠实拥趸。
这一章,咱们就把Git从安装到常用命令捋一遍。你不需要一次性记住所有命令,但得理解它的工作流——说白了,就是「你改了代码,Git帮你记着,还能随时回去」。
3.1 Git的安装与配置
先搞定环境。Git的安装其实很简单,但不同平台有点小区别。
3.1.1 安装Git
- Windows:去官网下载安装包,一路默认就行。我建议勾选「Git Bash Here」选项,这样右键就能打开命令行。
- macOS:直接用Homebrew,
brew install git,省心。 - Linux:Ubuntu/Debian用
sudo apt install git,CentOS用sudo yum install git。
安装完验证一下:
git --version
能看到版本号,说明装好了。
3.1.2 配置用户信息
这是必须的一步。Git每次提交都会记录是谁干的,所以你得告诉它你是谁。
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
我个人习惯用公司邮箱,这样提交记录里能直接关联到人。你想想看,如果团队里有人提交代码后找不到人,那多麻烦。
git config --list 可以查看当前所有配置。如果只想改当前项目的配置,去掉 --global 就行。
3.1.3 配置SSH密钥(推荐)
如果你用GitHub、GitLab或者Gitee,我建议配一下SSH密钥。这样就不用每次输密码了。
ssh-keygen -t rsa -b 4096 -C "你的邮箱"
一路回车,生成后把公钥(~/.ssh/id_rsa.pub)的内容复制到平台的SSH设置里。嗯,这一步我当年折腾了半小时,后来发现其实就是复制粘贴的事。
3.2 Git基本工作流
理解了工作流,你才算真正入了门。Git的工作流其实就三个区域:
| 区域 | 说明 |
|---|---|
| 工作区(Working Directory) | 你当前正在编辑的代码目录 |
| 暂存区(Staging Area) | 你准备提交的改动,临时存放的地方 |
| 本地仓库(Local Repository) | Git真正保存历史版本的地方 |
流程很简单:你在工作区改代码 → 把改动加到暂存区 → 提交到本地仓库。为什么要多一个暂存区?我刚开始也觉得多余,后来做项目时发现,有时候你改了好几个文件,但只想提交其中一部分。暂存区就是让你「挑着提交」的。
git add → 暂存区 → git commit → 本地仓库
3.3 Git常用命令实战
命令不用背,多用几次就熟了。我挑几个最常用的,咱们直接上手。
3.3.1 初始化仓库
进入你的项目目录,执行:
git init
这会在当前目录下生成一个隐藏的.git文件夹。别删它,删了版本历史就全没了。我曾经有个同事,清理磁盘时顺手把.git删了……嗯,那天的气氛很凝重。
3.3.2 查看状态
这个命令我一天能用几十次:
git status
它会告诉你哪些文件被改了,哪些还没加到暂存区。说白了,就是你的「当前进度报告」。
3.3.3 添加文件到暂存区
git add 文件名 # 添加单个文件
git add . # 添加所有改动
我个人习惯用git add .,但前提是我清楚自己改了什么。如果你不确定,最好一个一个加。
3.3.4 提交到本地仓库
git commit -m "提交说明"
提交说明要写清楚你干了什么。比如「修复了UART接收中断丢失问题」,而不是「改了点东西」。你想想看,三个月后你回来看提交记录,看到「改了点东西」是什么心情?
3.3.5 查看提交历史
git log
会显示所有提交记录,包括作者、时间、提交说明。加个--oneline参数,可以只看简略版:
git log --oneline
3.3.6 回退版本
这是Git最强大的功能之一。如果你发现最新提交有问题,可以回退:
git reset --hard HEAD~1 # 回退到上一个版本
注意,--hard会丢弃工作区的改动。如果你只是想撤销暂存区的文件,用git reset HEAD 文件名。
git reset --hard 会丢失未提交的改动。我曾经在调试时手滑执行了这个命令,结果一上午的代码全没了。从那以后,我每次回退前都会先 git stash 保存一下当前工作。
3.3.7 分支操作
分支是Git的精髓。你可以创建一条独立的分支来开发新功能,不影响主分支。
git branch 分支名 # 创建分支
git checkout 分支名 # 切换到分支
git checkout -b 分支名 # 创建并切换
合并分支:
git merge 分支名
我建议你养成一个习惯:主分支(main或master)永远保持稳定,新功能在分支上开发。这样即使出了问题,也不会影响主干。
3.3.8 远程仓库操作
如果你用GitHub或GitLab,需要把本地仓库和远程仓库关联起来。
git remote add origin 远程仓库地址
git push -u origin main # 第一次推送
git pull # 拉取远程更新
嗯,这里要注意:git pull其实是git fetch + git merge的组合。如果你不想自动合并,可以先git fetch看看远程有什么变化,再手动合并。
3.4 避坑指南
最后分享几个我踩过的坑:
- 不要直接修改
.git文件夹里的内容——我见过有人手动删了里面的文件,结果仓库直接废了。 - 提交前先
git status——确认你只提交了想提交的文件,别把临时文件、编译产物也加进去了。 - 写清晰的提交说明——这不是给别人看的,是给未来的自己看的。
好了,这一章的内容就这些。Git这东西,说白了就是个「后悔药」加「时光机」。你用得越多,越觉得它不可或缺。下一章咱们聊聊分支策略和团队协作,那才是真正体现Git威力的地方。