Git 本地版本控制极简使用笔记(Qt 项目专用)

核心原则

全程仅需掌握5 个核心命令,满足日常开发、版本记录、回滚修复的全部需求,无需复杂操作,适配传感器环筛管理平台项目

一、基础准备(已完成,备查)

1. 仓库初始化(仅执行 1 次)

bash 复制代码
# 进入项目根目录(Windows系统必加/d,否则无法切换盘符)
cd /d F:\workProject\XXXXXXXXXXXX0707Qt5_6
# 初始化本地Git仓库
git init

✅ 成功标志:终端提示 Initialized empty Git repository in 项目路径/.git/

2. .gitignore 配置(已完成,核心作用:过滤无用文件)

项目根目录的.gitignore已配置 Qt 专属规则,自动过滤编译产物、配置文件、打包文件,避免仓库臃肿,无需手动修改。

二、日常开发核心流程(99% 场景用这 3 步)

步骤 1:修改代码后,查看修改状态(可选,推荐)

cpp 复制代码
git status

✅ 作用:清晰看到哪些文件被修改 / 新增 / 删除,确认需要提交的内容,避免漏提 / 错提。❌ 红色标识:未加入暂存区的修改文件;✅ 绿色标识:已加入暂存区的修改文件。

步骤 2:将所有修改加入暂存区(必执行)

cpp 复制代码
git add .

💡 关键:结尾的英文点号不能漏,代表「当前目录下所有修改文件」,一键全部加入暂存区,无需单个选择文件。

步骤 3:提交修改,生成新版本(必执行,核心步骤)

bash 复制代码
git commit -m "备注内容"
✅ 备注编写规则(核心:人话描述,一眼看懂)
  1. 格式要求:动作 + 具体内容(动宾结构,简洁明了,控制在一行);

  2. 推荐动作:修复 / 新增 / 优化 / 删除 / 更新 / 迭代;

  3. 项目适配示例

    bash 复制代码
    git commit -m "修复工具栏窗口拖动问题,移除事件过滤器"
    git commit -m "新增XX温度实时监控显示功能"
    git commit -m "优化传感器数据解析逻辑,提升实时性"
    git commit -m "迭代项目至V2.01,修复3个已知bug"
    git commit -m "更新.gitignore,过滤exeRealse打包文件夹"
    ✅ 提交成功标志:

    终端显示 X files changed, X insertions(+), X deletions(-),并自动生成唯一哈希版本号 (如3ccd76a)。

三、版本管理常用操作(查历史 / 回滚,必备)

1. 查看所有历史版本(最常用,查版本号 / 备注)

bash 复制代码
git log

作用:列出所有提交记录,包含版本号(前 6 位即可使用)、提交时间、提交备注

✅ 操作技巧:按Enter键翻页,按q键退出查看;

✅ 核心提取:每个提交最上方的commit 3ccd76a...前 6 位3ccd76a就是该版本的唯一标识

2. 回滚到指定版本(改崩代码时救命用,慎用)

方式 1:快速回滚到上一个版本
bash 复制代码
git reset --hard HEAD^

方式 2:回滚到任意历史版本(推荐,精准定位)

bash 复制代码
# 通用格式:git reset --hard 版本号前6位
git reset --hard 3ccd76a

⚠️ 重要提醒 :回滚操作执行后,当前所有未提交的修改会被彻底删除,且无法恢复

✅ 回滚前必做:先执行git status确认是否有未提交修改,若有需先提交或手动备份。

四、高频小命令(备查,解决局部 / 整体修改问题)

1. 放弃未加入暂存区的修改(单个文件)

bash 复制代码
# 通用格式:git checkout -- 文件名(含相对路径,若文件在子目录)
git checkout -- mainwindow.cpp
git checkout -- src/sensor.cpp

✅ 作用:把单个文件恢复到最近一次提交的状态,适合单个文件改崩时快速还原,不影响其他文件。

  1. 放弃所有未提交的修改(整个项目)
bash 复制代码
git checkout .

✅ 作用:一键还原整个项目到最近一次提交的状态,适合多处文件改崩且无需保留当前修改时。

五、避坑指南(核心注意,杜绝版本控制翻车)

1. 绝对不能删除的文件

项目根目录的.git文件夹(隐藏文件夹),是 Git 仓库的核心文件,删除后所有历史版本记录会永久丢失,无法恢复

2. 无需手动处理的未提交文件

.gitignore已自动过滤以下文件,无需手动选择排除,Git 会自动忽略:

  • 编译产物:build/、debug/、release/、*.exe、*.dll、*.lib
  • Qt 专属配置:*.pro.user、*.pro.user.*、*.autosave
  • 项目打包文件:envRealse/
  • 系统 / IDE 配置:Thumbs.db、.vscode/、.idea/、*.suo

3. 提交备注避坑

  • ❌ 禁止无意义备注:如修改代码、更新、bug修复(无法定位具体修改内容);
  • ❌ 禁止写入 Git 自动版本号:如3ccd76a版本更新(Git 会自动管理版本号,多此一举);
  • ✅ 必须写具体内容:如修复工具栏mousePress事件过滤导致的窗口任意位置移动问题

4. 回滚操作避坑

  • 回滚前务必反复确认:当前修改是否无需保留,避免误删重要开发代码;
  • 若需频繁回滚,建议回滚前记录最新版本号,防止回滚后无法恢复到最新状态。

|----------------------|-------------------|----------------------------|
| 命令 | 核心作用 | 适用场景 |
| cd /d 项目完整路径 | 进入项目根目录 | 所有 Git 操作前的基础步骤 |
| git status | 查看文件修改状态(红 / 绿标识) | 提交前确认修改内容,避免漏提 |
| git add . | 将所有修改加入暂存区 | 提交前必执行步骤 |
| git commit -m "备注" | 提交修改,生成新的版本记录 | 日常开发核心步骤,完成功能 / 修复 bug 后执行 |
| git log | 查看所有历史版本,提取版本号 | 回滚版本前查询对应版本号 |
| git reset --hard 版本号 | 回滚到指定历史版本 | 代码改崩、功能实现失败时还原 |
| git checkout -- 文件名 | 放弃单个文件未提交的修改 | 单个文件改崩,需快速还原时 |
| git checkout . | 放弃所有文件未提交的修改 | 多个文件改崩,无需保留当前修改时 |

七、日常使用流程示例(贴合传感器环筛管理平台项目)

场景 1:修复工具栏窗口移动问题后,保存新版本

  1. 打开终端,进入项目目录:cd /d F:\workProject\XXXXXXXXXXXXXX0707Qt5_6
  2. 查看修改文件:git status(确认mainwindow.cpptoolbar.cpp为红色修改状态)
  3. 将修改加入暂存区:git add .(此时修改文件变为绿色)
  4. 提交并生成版本:git commit -m "修复工具栏事件过滤器,禁用窗口任意位置移动功能"
  5. 确认提交结果:git log(查看提交记录,确认版本生成成功,记录版本号备用)

日常最舒服的工作流(推荐)

  1. 开 Qt Creator → 写代码
  2. 改完一段功能
  3. 打开 cmd → 进入项目
  4. 执行
bash 复制代码
git add .
git commit -m "修复窗口拖动问题"
  1. 回到 Qt 继续写代码
  2. 循环......

场景 2:改崩传感器数据解析代码,回滚到上一可用版本

  1. 打开终端,进入项目目录:cd /d F:\workProject\XXXXXXXXXXXXXX0707Qt5_6
  2. 查看历史版本:git log(找到上一可用版本的版本号,如8f2e3d
  3. 执行回滚操作:git reset --hard 8f2e3d
  4. 验证结果:打开 Qt 项目,确认代码已恢复到上一可用版本,可正常编译运行。

回滚代码

关闭 Qt → 执行回滚 → 再打开 Qt,防止回滚的时候,回复头文件和源文件,和目前编辑的产生冲突。

八、使用建议

  1. 把「常用命令速查」部分复制到文本文档,贴在电脑桌面,开发时直接复制命令,无需记忆;
  2. 日常开发遵循「修改代码→git status→git add .→git commit -m "备注" 」流程,每完成一个小功能 / 修复一个 bug 就提交一次,版本记录越细致,后续回滚越精准;
  3. 纯本地开发无需学习复杂操作(分支、合并、远程仓库等),掌握上述命令即可满足全部版本控制需求;
  4. 提交备注保持统一风格,便于后续自己 / 团队快速查阅历史修改记录。

文章word版本。通过网盘分享的文件:Git 本地版本控制极简使用笔记(Qt 项目专用)

链接: https://pan.baidu.com/s/1_PcoeHe2OLsOZ61VgdlSHg?pwd=1234 提取码: 1234

相关推荐
A923A2 小时前
【Vue3大事件 | 项目笔记】第六天
vue.js·笔记·前端框架·前端项目
坐吃山猪2 小时前
OpenClaw02_GitHook使用
git·hook·openclaw
ysa0510302 小时前
模拟【打牌游戏】
数据结构·c++·笔记·算法
勤劳的执着的运维农民工2 小时前
使用ubnt protect chime门铃有感
运维·笔记
-许平安-2 小时前
MCP项目笔记三(server)
网络·c++·笔记·mcp
_饭团2 小时前
C语言数组全解析:从入门到精通
c语言·开发语言·数据结构·经验分享·笔记·学习·算法
莫寒清3 小时前
Git分支命名规范与最佳实践
git
左左右右左右摇晃3 小时前
Java异常处理笔记
笔记
今儿敲了吗4 小时前
44| 汉诺塔问题
数据结构·c++·笔记·学习·算法·深度优先