在嵌入式开发中,很多新手习惯用 U 盘或网盘备份代码,导致版本混乱、文件丢失、协作困难。当项目规模扩大,多人同时开发时,这种方式完全无法满足需求。Git 是目前最常用的分布式版本控制工具,能有效管理代码版本,支持团队协作。本文结合嵌入式工程特点,讲解 Git 的基础使用方法,从环境配置到第一次提交,覆盖日常开发中 90% 的常用操作。
一、环境准备:Git 安装与 SSH 配置
1.1 Git 安装
- Windows 系统
:从 Git 官网下载安装包,默认选项安装即可。安装完成后,右键菜单会出现 "Git Bash Here" 选项。- Linux 系统:通过包管理器安装,Ubuntu 执行sudo apt install git,CentOS 执行sudo yum install git。
安装完成后,打开 Git Bash,执行git –version,显示版本号即安装成功。
1.2 配置全局用户信息
按住shift键的同时点击鼠标右键选择open git bash

第一次使用 Git 前,需要配置用户名称和邮箱,这些信息会出现在每一次提交记录中。
git config –global user.name "你的用户名"
git config –global user.email "你的邮箱地址"
执行git config –list,查看配置是否生效。
1.3 生成并配置 SSH 密钥
使用 SSH 协议连接远程仓库(如 Gitee、GitHub),可以避免每次输入用户名和密码。
ssh-keygen -t ed25519 -C "你的邮箱地址"
连续按三次回车,使用默认路径和空密码。
cat ~/.ssh/id_ed25519.pub
复制输出的全部内容,从ssh-ed25519开始到你的邮箱结束。
- 登录 Gitee 账号,进入 "设置"→"SSH 公钥"
- 粘贴复制的公钥内容,设置标题(如 "工作电脑")
- 点击 "确定",输入密码验证
ssh -T git@gitee.com
第一次连接会提示是否继续,输入yes。如果显示 "Hi 用户名!You've successfully authenticated…",说明配置成功。
二、本地仓库初始化与第一次提交
2.1 创建工程文件夹
在本地创建嵌入式工程文件夹,例如SmartTherm_Project,将你的工程文件(如 CubeMX 生成的代码、Keil 工程文件等)放入该文件夹。
2.2 初始化本地 Git 仓库
进入工程文件夹,右键打开 Git Bash,执行初始化命令:
git init
该命令会在当前文件夹下创建一个隐藏的.git目录,用于存储 Git 的版本信息。
2.3 配置.gitignore 文件
嵌入式工程会生成大量编译中间文件和 IDE 配置文件,这些文件不需要提交到远程仓库。在工程根目录创建.gitignore文件,写入以下内容:
# Keil MDK 生成文件
*.o
*.d
*.crf
*.lnp
*.map
*.axf
*.hex
*.bin
*.elf
*.uvguix.*
*.uvoptx
RTE/
Objects/
Listings/
# STM32CubeMX 生成文件
*.ioc
*.mxproject
*.launch
.settings/
.cproject
.project
# 其他临时文件
*.log
*.tmp
*.bak
.DS_Store
Thumbs.db
这个文件告诉 Git 忽略哪些类型的文件,避免将无用文件提交到仓库。
2.4 添加文件到暂存区
将工程文件添加到 Git 的暂存区:
git add .
.表示添加当前目录下的所有文件(除了.gitignore中忽略的文件)。
2.5 提交到本地仓库
将暂存区的文件提交到本地仓库,并添加提交信息:
git commit -m "初始化工程,添加基础硬件驱动"
提交信息要简洁明了,说明本次提交的内容。
三、关联远程仓库(Gitee)
3.1 创建 Gitee 远程仓库
3.2 添加远程仓库地址
在本地 Git Bash 中执行以下命令,将本地仓库与远程仓库关联:
git remote add origin git@gitee.com:你的用户名/SmartTherm_Project.git
origin是远程仓库的默认别名,可以自定义。
3.3 第一次推送代码
将本地仓库的代码推送到远程仓库:
git push -u origin master
-u参数会将本地master分支与远程master分支关联,后续推送只需要执行git push即可。
刷新 Gitee 仓库页面,就能看到提交的代码了。
四、日常开发基本流程
4.1 查看仓库状态
在开发过程中,随时可以执行以下命令查看仓库状态:
git status
该命令会显示哪些文件被修改、哪些文件未被跟踪、哪些文件在暂存区等信息。
4.2 查看提交历史
查看所有提交记录:
git log
按q退出查看。如果只看最近 3 次提交:
git log -3
如果需要查看简洁的提交历史:
git log –oneline
4.3 修改文件后提交
日常开发中,修改代码后的提交流程:
git diff
git add 文件名
# 或者添加所有修改的文件
git add .
git commit -m "修复串口接收丢包问题"
git push
4.4 拉取远程更新
如果团队中有其他人提交了代码,需要先拉取远程更新,再提交自己的代码:
git pull
如果本地有未提交的修改,Git 会提示先提交或暂存修改。
五、分支基础操作
分支是 Git 的核心功能之一,允许你在不影响主线代码的情况下开发新功能或修复 bug。
5.1 查看分支
查看本地分支:
git branch
查看远程分支:
git branch -r
查看所有分支(本地 + 远程):
git branch -a
5.2 创建并切换分支
创建一个名为dev的开发分支,并切换到该分支:
git checkout -b dev
等价于以下两条命令:
git branch dev
git checkout dev
5.3 合并分支
当dev分支的功能开发完成并测试通过后,将其合并到master分支:
git checkout master
git pull
git merge dev
git push
5.4 删除分支
合并完成后,可以删除本地dev分支:
git branch -d dev
如果分支未合并,需要强制删除:
git branch -D dev
删除远程分支:
git push origin –delete dev
六、常见问题处理
6.1 撤销工作区的修改
如果修改了文件,但还没有添加到暂存区,想要撤销修改:
git checkout — 文件名
该命令会将文件恢复到最近一次提交的状态。
6.2 撤销暂存区的提交
如果已经将文件添加到暂存区,但还没有提交,想要撤销:
git reset HEAD 文件名
该命令会将文件从暂存区移回工作区,修改内容仍然保留。
6.3 撤销最近一次提交
如果已经提交到本地仓库,但还没有推送到远程,想要撤销:
git reset –soft HEAD^
–soft参数会保留修改内容,只撤销提交操作。如果想要彻底撤销提交和修改:
git reset –hard HEAD^
注意:–hard参数会删除所有未提交的修改,谨慎使用。
6.4 解决合并冲突
当两个分支修改了同一个文件的同一行时,合并会产生冲突。Git 会在冲突文件中标记冲突内容:
<<<<<<< HEAD
本地分支的内容
=======
远程分支的内容
>>>>>>> dev
手动编辑文件,删除冲突标记,保留需要的内容,然后执行:
git add 文件名
git commit -m "解决合并冲突"
七、嵌入式工程 Git 使用注意事项
八、常用命令速查表
| git init | 初始化本地仓库 |
| git add . | 添加所有文件到暂存区 |
| git commit -m "信息" | 提交到本地仓库 |
| git remote add origin 地址 | 关联远程仓库 |
| git push -u origin master | 第一次推送并关联分支 |
| git push | 推送到远程仓库 |
| git pull | 拉取远程更新 |
| git status | 查看仓库状态 |
| git log | 查看提交历史 |
| git checkout -b 分支名 | 创建并切换分支 |
| git merge 分支名 | 合并分支 |
| git branch -d 分支名 | 删除本地分支 |
| git checkout — 文件名 | 撤销工作区修改 |
| git reset HEAD 文件名 | 撤销暂存区提交 |


