4.9 KiB
4.9 KiB
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 显示大量 T(type change),说明符号链接未正确创建。
设置好环境变量后执行:
git status --short | grep "^ T" | awk '{print $2}' | xargs git checkout --
新 clone 仓库
环境变量设好后直接 clone 即可,符号链接会自动正确创建:
git clone <url>
注意: 如果未配置
MSYS=winsymlinks:nativestrict,Git 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 |
推送所有标签 |