---
title: "操控存储 - 项目和 MQL5 存储 - MetaEditor 帮助"
description: "MQL5 存储（或存储库）仅适用于交易平台的 MQL5（或 MQL4）文件夹，以及特殊的 hared Projects 目录，它用于 组项目 。 所有 MQL5 存储的操作都是通过 导航器 窗口的关联菜单和 源代码编辑器 的关联菜单执行的... - 操控存储 - 项目和 MQL5 存储 - MetaEditor 帮助"
image: "https://www.metatrader5.com/i/logo_metatrader5.png"
url: "https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_working"
---

[MetaEditor 帮助](https://www.metatrader5.com/zh/metaeditor/help) → [项目和 MQL5 存储](https://www.metatrader5.com/zh/metaeditor/help/mql5storage) → 操控存储

# 操控存储

MQL5 存储（或存储库）仅适用于交易平台的 MQL5（或 MQL4）文件夹，以及特殊的 hared Projects 目录，它用于 [组项目](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/projects#shared)。

所有 MQL5 存储的操作都是通过 [导航器](https://www.metatrader5.com/zh/metaeditor/help/workspace/navigator) 窗口的关联菜单和 [源代码编辑器](https://www.metatrader5.com/zh/metaeditor/help/workspace/source_code_windows) 的关联菜单执行的:

![MQL5 存储菜单](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_menu.png)

使用菜单命令，您可以在 MQL5 存储中执行以下操作:

- [接收](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_working#update) 来自存储的数据;
- [提交](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_working#commit) 到存储;
- [添加](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_working#add) 文件/文件夹至存储;
- [删除](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_working#delete) 存储上的文件/文件夹;
- [取消](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_working#revert) 本地副本数据的更改;
- [日志](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_working#journal) 查看存储上的数据更改日志;
- [查看更改](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_diff) 当前工作的文件副本。

## 入手启用 [#](#start)

存储所包括的信息如同文件树。 连接到存储时，MetaEditor 用户读取和写入这些文件。 用户始终使用本地数据副本，并在必要时将更改发送到存储。

若要开始处理 MQL5 存储中的数据，您必须将本地数据文件夹与存储库中的相应文件夹相关联:

- 如果您刚刚[创建了一个存储库](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_connect)，它是空的。您必须在它里面 [添加](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_working#add) 一个目录。 然后，存储库中一个适当的目录就会为指定目录而创建（相对/MQL5文件夹的相同路径）。这是一个根目录。所有文件操作都在这个目录中进行。
- 如果存储已经有一些数据，请将它们下载到本地目录。 为此，请点击![从存储更新](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_update_icon.png)位于导航器中根 MQL5（或 MQL4）元素的关联菜单中的 "从存储更新文件"。

## 版本化的数据存储

所实现的版本控制将目录/文件与存储库相关联，因此这样的目录/文件拥有了版本，即修订版本号。 修订版本号对应于每次数据更新。 每次更新存储库中的目录/文件时，修订版本号都会针对该目录/文件和整个根目录递增。 修订版是某个时间点目录/文件的状态。

根目录是 MQL5/MQL4 文件夹，和每个共享项目的文件夹。 修订版是针对每个根目录单独管理的，因此它们具有单独的修订版本号。 当您提交对 MQL5 目录所做的更改时，其修订版本号会增加，而项目的修订版本号不会更改（除非项目使用 MQL5 目录中的共享文件）。

一般操作方案:

- 当您将文件添加到 MQL5 存储或将其从存储中提取到本地 PC 时，在电脑和存储中的版本（修订版号）将匹配。
- 本地文件（工作副本）和存储器中相应文件的修订版本号最初是相同的。 如果您只是添加了文件或从存储库中提取文件，就会发生这种情况。
- 如果您修改了文件并将更改提交到存储库，修订版本号将在本地和存储库中增加。
- 当您提交更改时，可能会发现该文件已被某人编辑，并且存储库中的修订版本号大于本地版本号。 在这种情况下，您应该在发送自己的更改之前从存储库中提取更改。 MQL5 存储将尝试把存储库和您本地的文件 [合并修改](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_merging)。 在这种情况下，本地文件的版本号将被设置为等于存储库中文件的版本号。

每次修改业务均会记录在 [存储流水账](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_working#journal) 当中, 稍后用户可以查看何时、由谁更改了哪些文件。 用户还可以将本地数据副本更新 [至选定的修订版](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_working#update_revision) 以及 [恢复更改](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_working#revert_revision) 至选定的修订版。

## 添加到存储 [#](#add)

要将文件夹或文件添加到存储库，请选择它并执行![添加文件或文件夹](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_add_icon.png)添加文件或文件夹命令。 这会弹出一个对话框，显示要添加的文件夹和文件的列表。

> 本地添加文件。若要将更改发送到存储库，请执行![提交至存储](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_commit_icon.png)提交到存储。MQL5 存储只适用于以下类型的文件: mq4，mq5，mqh，cpp，h，bmp，wav，ex4，ex5，tpl 和set。 其它类型的文件不能被添加到库中。大于 64 MB 的文件无法添加到存储中。

![将该文件夹添加到存储](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_adding_folder.png)

勾选必要的文件和文件夹，然后单击确定。

> 存储操作的原则是不允许添加没有所在文件夹的文件。您不能添加一个位于没有添加到存储库中的文件夹的文件。您无法将单个文件添加到根目录 /MQL4 或 /MQL5 当中。在与存储库关联的文件夹中，只有其子目录可以添加。层级比较低的文件夹不能在没有其父级文件夹的情况下，被添加。

添加的文件和文件夹进行标记![已添加到存储](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_add_icon.png)用户资料的 "存储" 板块激活存储：

![已添加的文件和文件夹](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_added.png)

接下来，这些变化应该被发送到存储库。选择添加的文件夹/文件并执行![提交至存储](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_commit_icon.png)提交到存储。

![提交到存储](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_committing.png)

I在这个对话框中，你也可以选择应该被发送到存储库的更改。提交更改时，您可以添加评论。详细的评论会在以后有助于分析更改。

提交存储库的当前更改以后，相应的文件夹和文件被标记 ![没有变化](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_nochanges_icon.png)。这意味着数据的本地副本与上次提交/更新操作时存储中的数据没有区别。

> 如果与您添加的相对应的文件夹已经存在于存储中，那么“文件夹已经存在，从存储更新它”的错误就会出现。对于这样的文件夹选择![从存储更新](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_update_icon.png)从存储更新。 之后，它将被绑定到存储，并且来自存储库的数据将被添加到存储中。 然后，将您的更改发送到存储库，这要使用![提交至存储](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_commit_icon.png)提交到存储命令。如果文件大小超过 1 MB，则自动从提交对话框中删除选择。 小心下载大文件以避免存储系统过载。

## 从 MQL5 存储中检出并更新 [#](#checkout)

当 MetaEditor 中的 [存储被激活](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_connect) 后，执行主要数据的提取。 一旦您执行了 ![激活 MQL5 存储](https://www.metatrader5.com/i/help/metaeditor/en/storage_enable_icon.png)激活 MQL5 存储命令，MetaEditor 将检查存储是否包含任何数据。

- 如果存储包含来自 MQL5（MQL4）目录的数据，这些数据将立即下载到计算机。
- 如果存储含有可用的共享项目，这些项目将显示在共享项目部分。 若要将项目文件下载到本地计算机，请单击![从存储更新](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_update_icon.png)在项目的关联菜单中自存储更新。

将来的更新可以使用![从存储更新](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_update_icon.png)从存储更新位于导航器中文件和文件夹的关联菜单。

如果存储包括本地工作副本中不存在的文件夹，请在导航器窗口的 MQL5（或 MQL4）根元素处执行从存储更新。 存储中的所有数据将被下载到相应的本地文件夹。 数据的修订版本号将与存储器中的数据修订版相匹配。

![更新数据](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_updating.png)

> 如果本地文件夹包含数据，那么检测时从存储库中获得的数据将被添加进去。新文件将被添加。对于名称和路径相匹配的文件，它会尝试[合并数据](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_merging)。

## 更新修订版 [#](#update_revision)

MQL5存储存储了用户提交到存储的更改的整个历史记录。每次提交更改都是一次[修订](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_working#start) (特定时间的存储状态)。在多个用户通过存储进行数据并行工作时，您需要定期接收由其他用户所做的更改。![更新至修订版本](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_update_icon.png)更新至修订版本允许您从存储库中逐级更新本地数据副本。

例如，自上次更新数据的本地副本，三个新版本出现在存储。您可以先升级到第一次修订版，然后第二次和第三次修订版。

若要更新到特定修订版，请选择一个文件或文件夹，然后调用 [存储日志](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_working#journal) ，这需点击 ![显示存储日志](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_journal_icon.png)显示存储日志。

![更新修订版](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_update_revision.png)

在打开的窗口中，选择所需的修订版并运行![更新至修订版本](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_update_icon.png)更新至修订版本命令。

> 数据的本地副本只能更新到更高（更新）的修订版。从存储库中获得的数据被添加到本地副本。对于名称和路径匹配的文件，它将尝试 [合并数据](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_merging)。 如果文件已被添加到一个修订版，它们将被添加到本地副本。如果文件已经从修订版中删除，它们将被从本地副本删除。

## 恢复到修订版 [#](#revert_revision)

MQL5存储存储了用户提交到存储的更改的整个历史记录。每次提交更改都是一次[修订](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_working#start) (特定时间的存储状态)。在任何时候，您都可以返回到文件或文件夹的以前状态之一。

若要恢复到指定修订版, 选择文件或文件夹并调用 [存储日志](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_working#journal)，这要点击 ![显示存储日志](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_journal_icon.png)显示存储日志。

![恢复到修订版](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_revert_revision.png)

在打开的窗口中，选择所需的修订版并单击![恢复到此修订版](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_revert_revision_icon.png)恢复到此修订版。

> 恢复到修订版之后，选择的文件/文件夹将完全返回到指定状态。您可以恢复到早期和稍晚的修订版。

## 将更改提交至存储 [#](#commit)

正如前面提到的，您可以只在它们的本地副本使用数据。若要将本地更改传送到存储库，请使用![提交至存储](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_commit_icon.png)提交到存储命令。 已更改的本地文件和文件夹被标记使用图标![已更改](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_changed_icon.png) 中的测试程序。

> 在提交更改之前，您可以先 [查看](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_diff) 它们，只需选择文件并选择 ![版本的差别](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_diff_icon.png)关联菜单里的版本差别

![提交到存储](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_committing.png)

在提交对话框中，您可以选择应提交到存储库的已更改文件和文件夹。 提交更改时，您可以添加评论。详细的评论会在未来有助于更改的分析。

> 本地更改的优先级更高，无论如何它们都被添加到存储中。如果存储器中的修订版本号高于本地修订版（由其它源修改，并且本地数据未从存储库更新），那么当您尝试提交更改时，您将收到错误，如 "超期 (Out of date)"。 在这种情况下，首先执行![从存储更新](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_update_icon.png) 从存储更新命令会 [合并数据](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_merging), 然后选择 ![提交至存储](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_commit_icon.png)提交到存储。更新 bmp 和 wav 文件时要小心。合并后，这些文件将被新版本完全替代。 因此，在更新过程中，它们可能用存储库的文件所取代。为避免出现这种情况，请分别保存这些文件的副本，然后执行![从存储更新](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_update_icon.png)从存储更新命令会增加本地修订版本号，将以前复制的文件回退并将更改提交至存储。

## 删除 [#](#delete)

如果您打算删除文件或文件夹，请使用命令![删除文件或文件夹](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_delete_icon.png)删除文件或文件夹。 文件夹/文件将被从本地数据副本删除。若要从存储库中删除文件或文件夹，请使用![提交至存储](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_commit_icon.png)提交到存储。

> 按标准删除文件或文件夹![删除](https://www.metatrader5.com/i/help/metaeditor/en/delete_icon.png) 执行 [导航器](https://www.metatrader5.com/zh/metaeditor/help/workspace/navigator) 窗口的删除命令不会影响 MQL5 存储。 伴随下一次 [更新](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_working#update)，删除的数据将从存储中恢复。[链接到存储的根目录](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_working#start) 不能被删除。

## 恢复更改 [#](#revert)

如果您打算撤销在当前本地数据副本中所做的更改，请执行![恢复更改](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_revert_icon.png)恢复更改命令是为了必要的文件或文件夹。 文件/文件夹返回到前次与存储库同步期间本地保存的状态。

> 当您恢复更改时，最初的本地修订版本将被恢复，而不是存储库中的当前修订版。

## 存储日志 [#](#journal)

每次提交更改至存储应使用![提交至存储](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_commit_icon.png)提交至存储命令保存在日志中。 日志可帮助您轻松地分析您的项目的变化历史。若要查看文件/文件夹的更改日志，请选择![显示存储日志](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_journal_icon.png)显示存储日志。

![查看日志](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_journal.png)

上半部分显示更改的列表：

- 修订版 ― 提交的唯一编号;
- 作者 ― 用户的名称（与 MQL5 社区帐户的登录名相同），他们进行了这些更改;
- 日期 ― 提交更改的 UTC 格式日期;
- 注释 ― 更改注释。

使用关联菜单命令![更新至修订版本](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_update_icon.png) 更新至修订版本, 您可以将本地数据副本 [更新到选定的修订版本](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_working#update_revision)。

窗口底部会显示选中的版本中修改过的文件的列表。图标显示的更改类型：

- ![添加的](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_added_icon.png) ― 文件已添加;
- ![已更改](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_modified_icon.png) ― 文件已更改;
- ![删除](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_deleted_icon.png) ― 文件已删除。

使用更改文件列表的快捷菜单，您可以分析更改：

- ![与工作副本比较](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_compare_working_icon.png) 比较工作副本 ― 比较选定的文件和它的 [工作副本](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_diff#compare_working)。
- ![与以前的修订版比较](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_compare_previous_icon.png) 与以前的修订版比较 ― 比较选定的文件和它的 [之前修订版](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_diff#compare_previous)。
- ![比较修订版](https://www.metatrader5.com/i/help/metaeditor/en/mql5storage_compare_revisions_icon.png) 比较修订版 ― 比较 [文件的两个修订版](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_diff#compare_revisions)，要在窗口顶部预先选择它们。

## In this section

- [启用存储](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_connect)
- [创建并操控项目](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/projects)
- 操控存储
- [查看项目历史](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_diff)
- [合并修改](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_merging)
- [外部 Subversion 客户端](https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_svn_client)

```json
{"@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [ {"@type": "ListItem", "position": 1, "item": {"@id": "https://www.metatrader5.com/zh/metaeditor/help", "name": "MetaEditor 帮助"}}, {"@type": "ListItem", "position": 2, "item": {"@id": "https://www.metatrader5.com/zh/metaeditor/help/mql5storage", "name": "项目和 MQL5 存储"}}, {"@type": "ListItem", "position": 3, "item": {"@id": "https://www.metatrader5.com/zh/metaeditor/help/mql5storage/mql5storage_working", "name": "操控存储"}} ]}
{ "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{ "@type": "Question", "name": "MetaTrader 5: 操控存储", "acceptedAnswer": { "@type": "Answer", "text": "MQL5 存储（或存储库）仅适用于交易平台的 MQL5（或 MQL4）文件夹，以及特殊的 hared Projects 目录，它用于 组项目 。 所有 MQL5 存储的操作都是通过 导航器 窗口的关联菜单和 源代码编辑器 的关联菜单执行的: 使用菜单命令，您可以在 MQL5 存储中执行以下操作..." } }] }
```
