3、Git基础操作:初始化仓库、克隆仓库、添加文件、提交修改、查看状态与日志

Git这东西,说白了就是量化团队的「后悔药」+「时光机」。我见过太多团队,策略代码改来改去,最后都不知道哪个版本是能赚钱的。嗯,今天我们就从最基础的操作说起。

3.1 初始化仓库:从零开始

你写了一个新的回测框架,或者准备开始一个策略研究。第一件事,就是把这个目录变成Git仓库。

# 进入你的项目目录
cd /Users/yourname/quant_strategies

# 初始化Git仓库
git init

执行完 git init,目录下会多出一个隐藏的 .git 文件夹。这就是Git的「大脑」,所有版本信息都存在这里。我个人习惯,每次新建策略项目,第一件事就是 git init,哪怕还没想好要写什么代码。

小提示: 初始化后,可以用 ls -a 看看那个 .git 文件夹。别手贱去删它,删了版本历史就全没了。

3.2 克隆仓库:加入已有项目

团队里有人已经搭好了回测框架,或者你要接手别人的策略。这时候就需要克隆。

# 克隆远程仓库到本地
git clone https://github.com/yourteam/quant_framework.git

# 克隆并指定本地目录名
git clone https://github.com/yourteam/quant_framework.git my_quant

克隆下来后,你得到的是完整的项目副本,包括所有历史版本。我在项目中遇到过,有人直接下载ZIP包而不是用 git clone,结果丢了分支信息,后面合并代码时折腾了半天。

注意: 克隆时确保你有仓库的访问权限。量化策略代码通常放在私有仓库,别用公开仓库存你的核心策略。

3.3 添加文件:告诉Git我要管哪些

你写了一个 moving_average.py,想把它纳入版本管理。Git不会自动跟踪所有文件,你得手动告诉它。

# 添加单个文件
git add moving_average.py

# 添加当前目录所有文件
git add .

# 添加特定类型的文件
git add *.py

为什么会这样?因为有些文件你不想跟踪,比如日志文件、临时数据、API密钥。这时候就需要 .gitignore 文件。

# .gitignore 示例
*.log
__pycache__/
data/*.csv
config/api_keys.yml
核心要点: git add 是把文件从工作区放到暂存区。你可以理解为「预提交」,先挑出要提交的文件。

3.4 提交修改:保存一个版本快照

文件添加好了,该正式保存了。提交就是给当前状态拍一张照片,以后随时可以回来。

# 提交并写提交信息
git commit -m "feat: 添加双均线策略初版"

# 提交前自动添加已跟踪文件的修改
git commit -a -m "fix: 修复回测中的除零错误"

提交信息怎么写?我建议遵循「约定式提交」规范:

类型 含义 示例
feat 新功能 feat: 添加波动率计算模块
fix 修复bug fix: 修正数据对齐错误
refactor 重构 refactor: 拆分回测引擎
docs 文档 docs: 更新README使用说明
test 测试 test: 添加策略单元测试
我的习惯: 每次提交只做一件事。比如「修复bug」和「添加新功能」分开提交。这样以后回滚时,不会把有用的功能也撤掉。

3.5 查看状态:随时知道自己在哪

改了一堆文件,忘了哪些已经添加了?哪些还没提交?用 git status 看一眼。

# 查看当前仓库状态
git status

# 简洁模式,只看文件名
git status -s

输出会告诉你三件事:

  • 未跟踪的文件(红色):Git还没管它们
  • 已修改未暂存(红色):你改了,但还没 git add
  • 已暂存待提交(绿色):已经 git add 了,等提交

我曾经有一次,改了一整天的策略参数,结果 git status 一看,发现改的是旧分支。嗯,从那以后我养成了随时 git status 的习惯。

3.6 查看日志:翻翻历史记录

想看看之前谁提交了什么?或者想找回某个旧版本?日志就是你的时光机。

# 查看提交历史
git log

# 一行显示,更清爽
git log --oneline

# 查看最近3条记录
git log -3

# 图形化显示分支
git log --graph --oneline --all

输出示例:

a1b2c3d (HEAD -> main) feat: 添加波动率计算模块
e4f5g6h fix: 修正数据对齐错误
i7j8k9l feat: 实现双均线策略
m0n1o2p docs: 初始化项目文档

每个提交都有一个唯一的哈希值(比如 a1b2c3d),这就是那个版本的「身份证号」。想回到某个版本?记下这个哈希值就行。

避坑指南: 我曾经在回测时发现策略收益突然变差,查了半天,原来是有人把参数文件改了没通知大家。后来我们规定:每次修改参数必须提交,并且提交信息里写明改了哪些参数。

3.7 一张图看懂Git基础操作

下面这张图,把今天讲的核心流程串起来了。你想想看,其实就是三个区域之间的流转:

工作区 你写代码的地方 修改文件 暂存区 准备提交的文件 git add 本地仓库 保存的版本历史 git commit git add git commit git checkout / git restore 常用命令速查 git status - 查看状态 git log - 查看历史 git diff - 查看改动

说白了,Git基础操作就是这三步循环:改代码 → git add → git commit。刚开始可能会觉得多了一步 git add 有点麻烦,但等你需要精细控制哪些文件进入版本历史时,就知道这个设计有多巧妙了。

日常建议: 养成「小步提交」的习惯。每完成一个逻辑单元就提交一次,提交信息写清楚做了什么。这样以后查问题,能精确定位到是哪次改动引入了bug。

公众号:蓝海资料掘金营,微信deep3321