GIT:它是什么?·进阶篇
📘

GIT:它是什么?·进阶篇

第 2/2 篇

◍ 让 GIT 接管 ExpertMACD 的第一次提交

在 MT5 自带的 GIT GUI 里,文件对版本库而言只有三种活法:COMMITTED(已提交,数据安稳躺在仓库)、MODIFIED(改了但没存)、STAGED(已暂存,告诉 GIT 准备存)。刚拉进项目的 ExpertMACD.mq5 默认是 UNTRACKED,GIT 根本不盯它的变动。 点一下文件或按 CTRL+T,顶部状态从 UNTRACKED 翻成 STAGED FOR COMMIT,这意味着它进了第三种状态、可以被保存了。若反悔,选中后按 CTRL+U 就退回 UNTRACKED,不会进仓库。 把改动收进一个头文件后,提交前务必在注释框写一句干了啥——比如「初版 ExpertMACD 框架」。有了描述再点 COMMIT,标记区会提示创建成功,此后 GIT 开始跟踪这些文件,关掉 GUI 即可。 外汇与贵金属 EA 开发属高风险活动,版本管理只降低代码混乱概率,不改善策略盈亏。下一步等你把参数调稳,就得让 GIT 更新仓库版本,避免和本地改动搅成一团。

用 GIT GUI 把改动送进暂存区

在 MQL5 开发里,代码版本失控是常态。比起敲 BASH,用 GIT GUI 点按钮更直观:改完 EA 或指标源码后,GUI 会扫描跟踪文件,把变动以 UNSTAGED 形式列出,状态标为 MODIFIED,文件窗里绿色高亮即是差异行。 你可以决定保留还是丢弃——GIT 能像 Windows 还原点一样把文件退回到上一 COMMIT。每次提交必须写说明,否则日后翻历史就是瞎子摸象。 直接按 COMMIT 会没反应,因为文件还停在 MODIFIED,没进 STAGED。按 CTRL+I 弹窗问是否把所有文件加入,实测库里共 403 个文件,全选 YES 会一股脑暂存,我们只改了跟踪内文件,点 NO 才对。 点 NO 后改动进入 STAGAGED,再按 COMMIT 即被记录。记住:GIT 只认 STAGED 的文件,其余一律无视。外汇与贵金属 EA 迭代高危,误提交可能让实盘逻辑回退,动手前确认暂存清单。

「在 MetaEditor 里让 GIT 回退改动」

在 MT5 的 MetaEditor 里接好 GIT 后,撤销已写错的代码比想象中轻。操作和上一节提交改动走的路径一致,区别只在于你发起的是“还原”而不是“写入”。 界面里若看到某行被高亮成待处理的新变更,而你想让版本库里的旧版本覆盖工作区,直接按 CTRL+J,或点侧栏里更顺手的那个回退按钮即可。 GIT 不会闷头执行,它会弹窗让你确认一次——这是防误删的最后一道闸。点确认后,文件内容会被拉回到版本库 HEAD(顶部提交)的状态。 若文件正挂在 MetaEditor 编辑器里,它会跳出来问你要不要重新加载。重载完你就能看到那些被标红的改动整段消失。这套回退流程吃透了,后面讲分支切换才不至于卡壳。

◍ 用 GIT 回退到稳定代码版本

在 MT5 里做 EA 迭代,最实用的保命操作之一就是回退到更稳的代码版本。没用 GIT 时想回退极难,某些改动后只能删光重写;接了 GIT 后,右键历史提交就能把仓库顶指针挪到旧节点。 回退前得靠提交时的解释性注释定位稳定版——注释写清「修复剥头皮滑点逻辑」比「改了点东西」强太多,不然几十个 commit 里挑版本像盲猜。选好目标版本后右键选标记项,弹窗里若不想删仓库内容,必须勾「仅移动顶指针」类选项,误选会丢记录。 指针挪动后,仓库顶部变成旧代码态,再在 GUI 里点「检出到工作区」,旧版文件被覆盖,被删的文件 GIT 会重建。操作前有一次确认弹窗,点完才落地。外汇/贵金属 EA 改参数高频,回退练熟能省数小时返工,但自动化交易本身高风险,回退只解决代码问题不解决行情风险。 万一指针退太远想往新版本走,逻辑类似但方向相反,下节拆。

在 GUI 里把版本库往前拨一层

回滚到老版本时容易退得太狠,比如三层提交里直接退到第一层,这时想验证第二层的代码是否还能跑,就得把第二层重新顶到存储库顶层。MT5 策略项目的 git 目录里,回退后常会多出一个记录 HASH 的文件,这个 HASH 是严重出错时抢救数据的锚点,具体内容可查文档,这里不展开。 关键点在于操作方式:选第二层并置顶时,务必用 SOFT 模式而不是 HARD 模式。HARD 会连工作区一起抹掉,SOFT 只动版本指针,本地改动还在,验证代码安全得多。 若确认最新更改是废的,直接丢弃就用对应的删除选项,工作区回到上一层干净状态。 还有一种场景:从备份整体还原版本库。不必逐个文件拷,用 GUI 里的全量还原选项,磁盘上消失的目录和文件会一次性回来,适合快速接回项目。外汇/贵金属 EA 开发涉及高杠杆高风险,版本管理只是降低人为失误,不保证策略盈利。

「画得少,看得清」

把 GIT 接进 MQL5 开发,核心动作就那几步:建仓库、暂存改动、提交、推远程。原文作者只演示了最薄的一层,真实工程里它能管多文件 EA、共享 mqh 头文件和历史回溯。

  • 年 7 月 Renat Fatkhullin 在评论区确认,集成 Git 仓库的新 MetaEditor 即将推出,这意味着以后不用在外部客户端和编辑器间来回切。

现在就值得在本地用命令行跑通一套最小仓库,等 Forge 上线你能直接迁过去。工具越强,越该自己先摸熟,别等别人喂到嘴边。

常见问题

在 GIT GUI 里选中上一次稳定提交记录,点回退即可把文件恢复到该版本,本地改动会被覆盖,回退前先确认未保存内容可丢。
用 GIT GUI 的暂存功能,勾选你想保存的文件或代码块加入暂存区,其余改动留在工作区不提交就行。
小布可以读取你的提交记录并比对改动,标出可疑提交点,你直接在 GUI 里回退那一层就能恢复。
在 GUI 的提交历史里找到原最新提交,执行前进检出操作即可,只要没推送到远端一般不会丢记录。
首次提交前先建好忽略文件规则,只纳源码;提交信息写清改动目的,后面回退或查错都省事。