Git基础入门:从安装到第一次提交
各位做FPGA的同行,大家好。今天我们来聊聊Git的基础操作。说实话,我见过太多工程师用U盘拷贝代码、用文件夹命名来管理版本——"代码_v1_最终_真的最终.v"这种名字,你肯定不陌生。
我自己也经历过这种混乱。有一次项目紧急,我误删了同事刚改好的模块,两个人对着一个文件夹找了半小时。从那以后,我下定决心把版本管理搞规范。Git就是我的选择。
Git安装与配置
安装Git很简单。Windows去官网下载安装包,Linux用包管理器一行命令搞定。我习惯在Ubuntu上这样装:
sudo apt-get install git
装完第一件事是什么?配置身份信息。Git每次提交都会记录你是谁,所以先告诉它你的名字和邮箱:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
这里有个小细节——--global表示全局配置,对所有仓库生效。如果你某个项目想用不同身份,去掉--global,在项目目录里单独设置就行。
我个人习惯还会配几个别名,让操作更顺手:
git config --global alias.st status
git config --global alias.ci commit
git config --global alias.br branch
嗯,这样敲git st就能看状态,省了不少键盘寿命。
git config --list 检查所有配置项。我曾经遇到过同事提交代码后显示"unknown user",就是因为忘了配用户名。
Git工作流程:三个核心区域
Git的工作流程,说白了就是三个区域之间的文件流转。我画了一张图帮你理解:
你想想看,这三个区域其实对应着你的工作状态:
- 工作区:你正在编辑的FPGA代码文件。比如你刚写完一个计数器模块,还在改bug。
- 暂存区:你告诉Git"这些改动我准备保存"。有点像拍照前先摆好姿势。
- 仓库:真正把快照存下来。每次提交就是一个历史版本,随时可以回去看。
我在项目中遇到过不少新人,上来就git commit -a跳过暂存区。结果提交了一堆乱七八糟的改动,回退时根本分不清哪些是需要的。我的建议是——老老实实走完三步,别偷懒。
Git基本命令:从零开始
1. git init — 创建仓库
进入你的FPGA项目目录,执行:
cd /home/yourname/projects/my_fpga_project
git init
这会在当前目录生成一个隐藏的.git文件夹。Git的所有信息都存在这里。你不需要动它,但要知道它存在。
git init,也不要在已有的Git仓库里再执行一次。我曾经见过有人在家目录执行了 git init,结果整个home目录都被Git管理了,那叫一个酸爽。
2. git status — 查看状态
这个命令我一天能用几十次。它告诉你当前工作区、暂存区的情况:
git status
输出会显示:哪些文件被修改了、哪些在暂存区、哪些还没被跟踪。红色表示未暂存,绿色表示已暂存。一目了然。
3. git add — 添加到暂存区
把文件从工作区挪到暂存区:
git add top_module.v # 添加单个文件
git add src/ # 添加整个目录
git add . # 添加当前目录所有改动
我个人习惯用git add -p,它会让你逐块确认是否添加。对于大文件改动,这个功能特别好用——你可以只提交某一部分修改,另一部分留着继续改。
4. git commit — 提交到仓库
暂存区的文件确认无误后,提交:
git commit -m "完成了计数器模块的时序优化"
提交信息怎么写?我有个原则:让别人(包括未来的你)一看就懂。不要写"修改bug"这种废话,要写"修复了跨时钟域同步时出现的亚稳态问题"。
[类型] 简短描述(50字以内)
详细说明(可选,72字换行)
类型包括:feat(新功能)、fix(修bug)、docs(文档)、refactor(重构)、test(测试)
5. git log — 查看历史
想看提交记录?用这个:
git log # 完整历史
git log --oneline # 一行一个提交,简洁
git log -3 # 只看最近3条
输出会显示每个提交的哈希值、作者、日期和提交信息。哈希值很重要,后面回退版本全靠它。
一个完整的FPGA项目示例
假设你刚新建了一个LED闪烁的FPGA工程,我们来走一遍完整流程:
# 1. 初始化仓库
cd led_blink
git init
# 2. 创建代码文件(假设已经写好了led_blink.v)
# 查看状态
git status
# 输出:Untracked files: led_blink.v
# 3. 添加文件到暂存区
git add led_blink.v
# 4. 提交第一个版本
git commit -m "feat: 添加LED闪烁模块初始代码"
# 5. 修改代码后,再次查看状态
git status
# 输出:Changes not staged: led_blink.v
# 6. 添加并提交
git add led_blink.v
git commit -m "fix: 调整LED闪烁频率为1Hz"
# 7. 查看历史
git log --oneline
# 输出:
# a1b2c3d fix: 调整LED闪烁频率为1Hz
# e4f5g6h feat: 添加LED闪烁模块初始代码
你看,整个过程其实就这几个命令来回用。刚开始可能会觉得麻烦,但养成习惯后,你会发现它带来的好处远超想象。
git diff 看看具体改了哪些内容。这个习惯帮我避免过好几次误提交——有一次我发现自己不小心把仿真波形文件也加进去了,还好提前发现了。
避坑指南
最后分享几个我踩过的坑:
- 不要提交中间文件:FPGA工程的
.bit、.rpt、_vivado.log等文件,每次编译都会变,提交它们只会让仓库臃肿。用.gitignore忽略掉。 - 提交前先编译:我习惯在提交前跑一遍综合或仿真,确保代码能通过。不然提交一个编译不过的版本,回头自己都懵。
- 小步提交,频繁提交:不要攒了一周的工作量才提交。每完成一个小功能就提交一次,回退时更灵活。
好了,Git基础就讲到这里。这几个命令虽然简单,但它们是版本管理的基石。下一节我们会深入分支操作,那才是Git真正强大的地方。