MQL5 Algo Forgeは、MetaEditorに組み込まれた、Gitベースのバージョン管理およびストレージ機能です。主にMQL5フォルダ(すべてのアルゴリズムを含む)と、すべての公開プロジェクトを格納する専用のShared Projectsディレクトリを中心に機能します。
Gitはバージョン管理システムの一つで、ファイルがそれぞれの時点でどのような状態だったかを記録します。重要な変更の損失を防ぎ、簡単にロールバックできるほか、実験用のブランチ作成をサポートし、複数の開発者が同じプロジェクトで共同作業できるようにします。Gitの基本については、公式ドキュメントを学習しておくと役立ちます。
コミット(commit)とは、ある特定の時点におけるファイルの状態を記録したものです。それぞれのコミットには一意の識別子と、変更内容を説明するメッセージが付けられます。プロジェクトの履歴は、コミット、ブランチ、およびそれらの間の関係によって管理されます。
変更がいつ行われたか、誰が変更したか、どのファイルが変更されたか、また各コミットにどのような変更が含まれているかを確認できます。さらに、異なるバージョンのファイルを比較したり、以前のファイルの状態を復元したり、別のブランチに切り替えたり、必要に応じて特定の変更を取り消したりすることもできます。
共有プロジェクトや共同作業スペースで作業する場合は、定期的にPull(プル)することを強く推奨します。これにより、リモート側で行われた変更がローカルのコピーに取り込まれ、競合しない変更であればGitが自動的にマージしてくれます。ただし、2人のユーザーが同じコード行を変更した場合や、互いに両立しない変更を行った場合には、競合が発生することがあります。その場合は、コミットまたはリモートへのPush(プッシュ)を行う前に、競合を解決する必要があります。
基本ワークフロー:
MetaEditorにMQL5.communityアカウントでログインしていることを確認してください。Gitが有効になっているディレクトリで作業を開始するには、次のいずれかを行います。
Git はコマンドラインプログラムですが、MetaEditorではクリック操作によってGitを便利に利用できるインターフェースが提供されています。Gitコマンドには、さまざまな場所からアクセスできます。
1. ナビゲータ内のファイル/フォルダを右クリックします。

2. タブを右クリックします。

3. コードエディタ内の任意のテキストまたは空白部分を右クリックします。

4. 上部メニューで[Git]をクリックします。

これらのコマンドを使用すると、Gitの操作を実行し、MQL5 Algo Forgeと連携できます。
ローカルのフォルダまたはファイルをMQL5リポジトリに追加するには、それを右クリックして[Git Add File/Folder]を選択します。追加するファイルの一覧を表示するダイアログボックスが表示されます。

追加するファイルが選択されていることを確認し、[OK]をクリックします。MetaEditorはコミットによってファイルを追加し、そのコミットを直ちにリモートへプッシュします。
追加された(追跡対象となった)ファイルは
と表示されます。

ブランチは、安定したコードベースに影響を与えることなく、新しい機能や修正を安全に開発できる並行したサンドボックスとして機能します。新しいブランチでの作業が完了し、十分にテストしたら、そのブランチをメインプロジェクトにマージできます。
ファイル/フォルダを右クリックし、[Git Branch]を選択して[New]を選びます。表示されたダイアログでブランチ名を入力し、[OK]をクリックします。

その後、新しいブランチに切り替えて、そこで作業を開始できます。
ブランチを切り替えることで、リポジトリ内の異なるサンドボックスやタイムラインの間を安全に移動できます。選択したブランチの正確な状態に合わせて、作業中のファイルが即座に更新されます。
ファイル/フォルダを右クリックし、[Git Branch]を選択します。ブランチの一覧から、切り替えたいブランチを選択します。
変更されたファイルとフォルダは、
として表示されます。
![]()
コミットする前に、ファイルを右クリックして[Git Difference]を選択すると、そのファイルの変更内容を確認できます。
コミットする準備ができたら、ファイル/フォルダを右クリックし、[Git Commit]を選択します。
コミットダイアログでは、コミットする変更済みファイルを選択し、コメントを追加できます。詳細なコメントを残しておくと、将来、変更内容を簡単に分析できるようになります。

[OK]をクリックすると、MetaEditor が変更をコミットすると同時に、リモートリポジトリにもプッシュします。
コミットとプッシュが正常に完了すると、該当するフォルダとファイルは
として表示されます。
共同作業をしている場合、他のユーザーがあなたより先にプロジェクトを更新することがあります。また、あるコンピュータで変更をコミットし、別のコンピュータで作業を続けることもあります。変更をPullすると、ローカルプロジェクトにリモートリポジトリからの最新の更新が確実に反映され、競合を回避するのに役立ちます。
リモート側のすべての変更を取得するには、フォルダを右クリックして[Git Pull]を選択します。[操作ログ]タブには、リモートから取得した具体的な変更内容など、関連するログが自動的に表示されます。
![Git操作のログを表示している[操作ログ]タブ Git操作のログを表示している[操作ログ]タブ](/i/help/metaeditor/en/mql5storage_updating.png)
編集したコードを保存した後やファイルを削除した後でも、変更前の状態にプロジェクトを簡単に復元できます。
ファイル/フォルダに加えた変更を取り消すには、ファイル/フォルダを右クリックし、[Git Revert]を選択します。
複数のファイルに変更があるプロジェクトで変更を取り消すと、ダイアログが開きます。そこで、変更を取り消したいファイルを選択して[OK]をクリックします。

すでに取り消したい変更をコミットしている場合は、そのコミットを取り消す操作を行います。
特定のコミットによってプログラムが正常に動作しなくなった場合や、そのコミットによる変更が不要になった場合は、その変更をすばやく取り消すことができます。
影響を受けたファイル/フォルダを右クリックし、[Git Log]を選択して、コミット履歴を表示するダイアログを開きます。取り消したいコミットを右クリックし、[Revert to This Revision]を選択します。

MetaEditor は新しいコミットを作成し、選択したコミットによる変更を反映して取り消します。その際、コミット履歴は保持されます。
ファイル/フォルダを削除するには、対象を右クリックして[Delete]を選択します。この操作により、ファイル/フォルダがローカルから削除されます。
同じファイル/フォルダをリモートストレージからも確実に削除するには、プロジェクトを更新し、その後削除の変更をコミットします。すべてのコミットと同様に、MetaEditorは削除のコミットを自動的にリモートへプッシュします。
Shared Projects内のプロジェクトを削除するには、プロジェクトを右クリックして[Delete Shared Project]を選択します。
ローカルコピーが削除されます。プロジェクトの作成者本人である場合は、リモートコピーも削除されます。
特定のファイル/フォルダのコミット履歴には、コメント、作成者、日付が表示され、ファイル/フォルダが時間の経過とともにどのように変更されたかを追跡できます。
ファイル/フォルダを右クリックし、[Git Log]を選択します。
上部の列には、次の情報が表示されます。

一覧からコミットをクリックすると、変更、追加、または削除されたファイルが下のセクションに表示されます。

アイコンは変更の種類を示します。
コミットを右クリックすると、次のオプションが表示されます。