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: 添加策略单元测试 |
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基础操作就是这三步循环:改代码 → git add → git commit。刚开始可能会觉得多了一步 git add 有点麻烦,但等你需要精细控制哪些文件进入版本历史时,就知道这个设计有多巧妙了。
公众号:蓝海资料掘金营,微信deep3321