GrabBag/git使用说明.md

4.9 KiB
Raw Blame History

Git 使用说明

1. Windows 下的符号链接配置

本项目包含 Linux 符号链接文件(AppAlgo/SDK/ 目录下的 .so 软链接)。 Windows 下需要正确配置才能管理这些文件。

前提条件

  • 开发者模式已开启(设置 → 开发者选项 → 开发人员模式)
  • Git 安装时选择了 Enable symbolic links

配置环境变量

在 PowerShell 中执行(设置一次即可,永久生效):

[System.Environment]::SetEnvironmentVariable('MSYS', 'winsymlinks:nativestrict', 'User')

设置后重启终端。验证:

echo $MSYS
# 输出: winsymlinks:nativestrict

确认 git 配置

git config core.symlinks
# 输出: true如果为 false 需要重新 clone

修复已有仓库的符号链接

如果 git status 显示大量 Ttype change说明符号链接未正确创建。 设置好环境变量后执行:

git status --short | grep "^ T" | awk '{print $2}' | xargs git checkout --

新 clone 仓库

环境变量设好后直接 clone 即可,符号链接会自动正确创建:

git clone <url>

注意: 如果未配置 MSYS=winsymlinks:nativestrictGit Bash 会将 symlink 创建为 JUNCTION 或占位文件,导致 git status 出现大量 T 状态且 git diff 报错。


2. WSL / Linux 下的 Git 管理

Linux 原生支持符号链接,无需额外配置。适用于 WSL 和 ARM 开发板等环境。

安装 Git

sudo apt update && sudo apt install git

配置用户信息

git config --global user.name "你的用户名"
git config --global user.email "你的邮箱@example.com"

凭证存储(避免重复输入密码)

# 方式一:缓存(默认 15 分钟,可自定义)
git config --global credential.helper 'cache --timeout=3600'

# 方式二:永久存储到文件(明文,仅限个人开发机)
git config --global credential.helper store

WSL 访问 Windows 仓库

WSL 中可以直接访问 Windows 磁盘上的仓库:

cd /mnt/c/project/QT/GrabBag
git status

注意: 跨文件系统操作性能较低。如果频繁在 WSL 中操作,建议将仓库 clone 到 WSL 本地文件系统(~/projects/),性能会快很多。

WSL 与 Windows 双环境协作

操作 建议环境
代码编辑、Qt 编译 Windows
ARM 交叉编译、打包、发布 WSL / Linux
Git 日常操作add/commit/push 两边都可以
涉及 .so 符号链接的提交 WSL更可靠

2. 项目构建与发布脚本

所有脚本位于 GrabBagPrj/ 目录下,在 Linux / WSL 环境中运行。

常用命令

# 发布(编译 + 打包 + 更新版本号)— 最常用
./project_release.sh GrabBag

# 单独打包
./project_pkg_desktop.sh GrabBag        # 桌面应用
./project_pkg_service.sh BeltTearing    # 服务

# 单独操作
./buildArmPrj.sh GrabBag               # 仅编译
./project_updateversion.sh GrabBag      # 仅更新版本号

# 查看所有可用项目
./project_release.sh --list

新增项目

编辑 GrabBagPrj/project_registry.sh,在数组中加一行:

# 桌面项目 — 标准格式一行搞定
"NewApp;newAlgoDir"

# 服务项目
"NewService;newAlgoDir"

详见 project_registry.sh 顶部注释。


3. Git 常用命令速查

状态查看

命令 说明
git status 查看工作区状态
git log --oneline 简洁提交历史
git log --graph --oneline 图形化提交历史
git diff 查看未暂存的修改
git diff --staged 查看已暂存的修改

文件与提交

命令 说明
git add <file> 添加文件到暂存区
git add . 添加所有修改
git commit -m "信息" 提交
git commit -am "信息" 添加并提交(仅已跟踪文件)
git checkout -- <file> 撤销工作区修改
git reset HEAD <file> 取消暂存

分支

命令 说明
git branch 查看本地分支
git branch -a 查看所有分支
git checkout -b <name> 创建并切换分支
git merge <branch> 合并分支
git branch -d <name> 删除分支

远程同步

命令 说明
git fetch 获取远程更新
git pull 拉取并合并
git push 推送
git push -u origin <branch> 推送并设置上游

撤销与暂存

命令 说明
git reset --soft HEAD~1 撤销提交(保留暂存)
git reset --mixed HEAD~1 撤销提交(保留工作区)
git revert <commit> 创建反向提交
git stash 暂存工作区
git stash pop 恢复暂存

标签

命令 说明
git tag 查看标签
git tag -a <name> -m "说明" 创建标签
git push origin --tags 推送所有标签