Linux 环境下 Git 版本控制核心指令手册
仓库初始化与权限设置
在基于 Linux 的嵌入式研发环境中,Git 是管理代码版本的关键工具。首要步骤是构建中心化的裸仓库,该仓库仅包含版本数据库而无工作目录:
git init --bare embedded_project.git
为了保证团队协作时的读写权限,需要修正文件所有者,使其归属于 Git 用户组:
sudo chown -R git:git embedded_project.git
克隆与本地化
开发者将服务器上的镜像同步到个人工作站:
git clone ./embedded_project.git
系统会自动生成一个同名目录,后续所有的代码操作均需在该项目根目录下执行。
变更追踪与管理
状态查询与比对
完成代码编辑(例如修改 device_driver.c)后,使用状态命令检查当前环境:
git status .
若需确认具体的代码差异细节,可调用 diff 工具进行逐行比对:
git diff device_driver.c
暂存变更
校验通过后,将修改纳入暂存区。可以针对指定文件进行操作:
git add kernel_init.c
也可以同时指定多个文件:
git add config.h utility_lib.c
对于已存在于版本库的文件,使用更新模式只收录其变更部分:
git add -u
或者一键收录当前目录下的所有新增及修改:
git add ./
取消暂存
如果发现误提交了某些文件到暂存区,可以使用重置命令将其移除,此时不影响工作区的代码内容:
# 现代推荐写法
git restore --staged target_module.c
# 传统通用写法
git reset HEAD target_module.c
本地快照提交
待暂存区准备就绪,执行提交动作生成永久记录:
git commit -m "完成传感器数据读取接口"
如果在提交后发现注释错误或代码逻辑有误,且尚未推送到远程端,可根据需要选择回退方式:
- --soft:撤销提交,保留暂存区,适合继续补充修改。
- --mixed:撤销提交,移出暂存区,代码改动仍在工作区。
- --hard:强力撤销,提交和代码改动全部丢失,需谨慎。
示例操作:
git reset --soft HEAD~1
git reset --hard HEAD~1
语义化提交规范
为了便于历史检索与版本回溯,建议采用结构化的 Commit Message 格式:<type>(<scope>): <subject>。
- Type
- 包括
feat(新特性)、fix(Bug 修复)、docs(文档)、style(格式调整)、refactor(重构)、perf(性能优化)、test(测试)、chore(构建/工具)。 - Scope
- 描述受影响的模块,如
network,ui,db。若涉及全局则用*。 - Subject
- 简述变动内容,使用祈使语气,小写开头,句末不加标点。
正确示例:
feat(auth): 实现 OAuth2 登录流程
fix(view): 修正列表渲染时的高亮样式错误
分布式协作
将本地分支推送到远程服务器:
git push origin stable_branch
获取上游分支的最新更新并合并到本地:
git pull origin mainline
在复杂分支场景下,也可先切换分支再进行同步:
git checkout experimental
git pull origin experimental
历史版本回滚
首先通过日志查找特定的提交哈希值:
git log --oneline --graph
若要回退整个工作区到某个历史节点:
git checkout f4a2b1c
如果只是某个文件出了问题,想恢复到上一次提交的状态:
git checkout HEAD -- problematic_file.cpp
恢复主分支最新版时,若有未处理的冲突,需先清理现场:
git checkout -- .
git checkout main
版本标签维护
Git 提供标签功能用于标记重要的发布版本。例如标记为 v2.3.0:
git tag v2.3.0
将标签上传至远端仓库:
git push origin v2.3.0
如果需要批量推送所有本地标签:
git push --tags
获取最近的版本标签名称:
git describe --tags --abbrev=0
删除本地不需要的标签:
git tag -d v2.3.0