GIT:它是什么?
概述
在本文中,我们将稍稍偏离我们的主题。让我们从回放/模拟器系统的主题稍作休息,了解一下所有程序员都必须使用的工具。如果您对它不熟悉,一定要阅读本文并采用这一工具,因为它确实能让任何程序员更轻松、更快速地解决问题。
我们将主要关注那些努力成为合格专业人士的初学者。不幸的是,我要向您展示的工具在 Windows 11 上并不像在 Windows 10 上那样易于使用,所以如果您是 Windows 用户,最好(至少在撰写本文时)使用版本10。
我们要讨论的工具是 GIT。它最初是为 LINUX 设计的,非常适合想要编程和开发新应用程序的人。虽然目前 MQL5 编辑器没有直接与之集成,但这丝毫不会妨碍我们使用该工具。要从 GIT 中获益,您需要采取一些必要的步骤。
如果你已经熟悉它或在工作中使用它,这篇文章不会为你的知识增添任何新内容,可能只是出于好奇而感兴趣。但是,如果你不了解 GIT 并且一直在编程,迟早你会遇到一种情况,这会阻止你继续开发特定的应用程序。我们正在讨论一个在编辑代码时可能意外出现的错误,您只有在几天或几周后才能注意到。相信我,这种事情比看起来要常见得多,GIT 可以帮助避免这种情况。
什么是 GIT?
GIT 是一个程序,或者我称之为一个工具,它允许我们以简单高效的方式跟踪和编目我们正在开发的应用程序的版本。但本文不是用户手册,我不会这么做。主要是因为已经有大量的相关教学材料。绝大多数此类指南都针对与 GIT 原生集成的编辑器,如 Visual Studio。但由于 MetaEditor 不具备此功能,因此需要进行特殊设置,才能与 GIT 和 MQL5 一起正确工作。
进行必要的更改后,您就可以使用任何现有的 GIT 教程来了解更多信息。这篇文章应该早点写,但我根本没有意识到在读者中有这么多渴望成为专业人士的初学者。这些人在提高过程中遇到了很多困难,因为他们在学习过程中不知道正确的方法和手段来获取应用程序并对其进行修改。这里最重要的不是修改应用程序,而是知道如何记录流程,从错误中吸取教训,从而改进。正如我提到的,GIT是学习和记录编程经验的好方法。这非常简单易懂 - 你只需执行我将展示的步骤即可。
要充分发挥这一工具的威力,可以使用任何应用程序,例如我们的回放/模拟系统,并对其进行修改,以找出你的假设是否可行。久而久之,就很难理解到底改了什么,尤其是必须在不同时间点进行修改的时候。如果不使用适当的工具,就很难做到这一点。最终,你可能会对这些变化感到困惑,失去学习和成为专业人士的所有欲望。但 GIT 可以帮你做到这一点。您可以修改应用程序并立即测试所有更改。如果您的假设是正确的,您将能够获得一份最终文件,该文件将准确说明更改的内容。这难道不美妙吗?在学习阶段,我自己不得不手动完成所有事情。但是使用 GIT,您可以看到所有更改,因为它们将被突出显示。
GIT 基于一个非常简单的概念,其基本形式类似于一个链接变更列表,就像一个每日计划或日记。它是在您做笔记时创建的。我们稍后再看看如何使用。但从广义上讲,这将是一张图表。作为一个图表,它可以采取任何形式,在相同的实现过程中为我们提供不同的方向。每个方向都将允许相关想法的发展。如果你从未见过或不知道这个图表是什么样子的,你可以通过看下面的图片来了解它:
在图中的每一点上,我们都有一个被称为节点(NODE)的值。连接这些值的线称为 EDGES。这是一个简单图表的示例,然而,情况可能要复杂得多。我建议你学习图论,这很值得,尤其是如果你真的想成为一名专业人士的话。但不要一开始就使用图表,从列表开始,然后学习树状图,再到图表。这种学习方式会更加连贯一致。
让我们从最基本的部分开始
最基本的部分是下载最新版本的 GIT。为此,请访问 git-scm.com,您还可以在那里找到相关文档。大部分资料已经翻译完毕。如果有什么不清楚的地方,您可以找到很多人解释您需要了解的主题,只需搜索和学习。因此,在这里我只想为那些不了解 GIT 的人介绍一下基础知识。
如果您是 Windows 用户,只需点击下图所示区域即可:
在撰写本文时,这是最新版本。下载最新版本的 GIT 后,您需要将其安装到电脑上。安装可以使用默认配置完成,但我要进行一个小更改,如下图所示:
这不是必需的步骤,您可以稍后再更改默认编辑器。但因为我喜欢使用 NotePad++,所以我指示 GIT 使用它。如果以后决定使用其他编辑器,只需更改 GIT 全局变量即可。该变量为CORE.EDITOR(详情请参见文档)。因此,安装 GIT 后,需要对其进行配置。不过别担心,这很简单,我会把一切都解释清楚,让你知道从哪里开始。安装完 GIT 后,您将可以访问下图中标记的内容:
这是 Windows 11 中缺少的两个选项,这就是我推荐使用 Windows 10 的原因。事实上,这些设置可以在 Windows 11 中激活,但您需要遵循一些步骤,这超出了本文的讨论范围。注意:我们不需要这些选项。不过,它们的存在大大简化了工作,使工作变得更加轻松愉快。如果选择 Git GUI Here,则会出现以下窗口:
在这里,你可以打开、克隆或创建一个版本库。但我们希望将 GIT 与 MQL5 结合使用,所以我们还没有点击任何地方。不必关注 "Git Bash Here" (在此运行 Git Bash)选项。我们在这里主要介绍图形用户界面,但也有很多资源解释如何使用 BASH,只需在互联网上搜索即可。由于我们的目的是向你介绍 GIT,我将使用它最简单的部分,即图形用户界面。然而,在一个界面中完成的所有工作都可以在另一个界面中完成;这只是一个习惯问题。首先,打开 MetaEditor,点击下图中标记的区域:
将出现以下窗口:
现在,您需要允许显示隐藏文件和文件夹。这样就可以进行本地 GIT 备份。您也可以使用 GITHUB。但在这里,我想尽量简单明了,因此,请使用文件资源管理器更改以下设置:
选中高亮显示的选项,单击 "应用",然后单击 "确定"。现在你可以看到 GIT 将创建的文件夹了。由于我们还没有版本库,因此不会显示文件夹。你需要再次右击并选择 "Git GUI Here"(在此运行 Git GUI),然后点击 "Create New Repositor"(创建新版本库),就会打开下面的窗口:
现在选择"Browse",另一个窗口就会打开:
单击 "Select Folder"(选择文件夹),您将看到以下内容:
点击 "Create"(创建) 后,您将看到以下结果:
上图中突出显示的文件夹正是我们想要创建的。创建文件夹后,将打开一个新窗口,如下图所示。
现在请注意,标记区域中包含 EX5 文件。这些文件是可在 MetaTrader 5 中运行的应用程序。但我们不希望这些文件污染搜索。要移除这种文件类型和其他任何文件类型,我们必须做一个小调整。对于我们正在设置的存储库,应该这样做。如果你愿意,你可以在全局范围内进行更改,因为 GIT 允许你双向工作。要清理这些不必要的文件,并不需要删除它们,您需要做的一切如下图所示:
注意需要更改的路径和文件。现在打开文件,您首先会看到以下内容:
# git ls-files --others --exclude-from=.git/info/exclude # Lines that start with '#' are comments. # For a project mostly in C, the following would be a good set of # exclude patterns (uncomment them if you want to use them): # *.[oa] # *~
'排除'文件的原始内容
您可以删除这些内容,因为它们只是注释。但无论如何,您都需要在其中添加几行。在这种情况下,不应显示所有扩展名为 EX5 的文件以及其他一些文件。因此,请按下面的方法修改文件,更多详情,请参阅文档。然后保存文件。
这会告诉 GIT 在此版本库中应忽略某些文件类型。但过滤器应该设置在我显示的位置。过滤系统有很多选项,因此我建议您研究一下文档。过滤得越好,下一阶段就越容易。保存文件后,返回 GIT GUI 窗口并单击下图所示的 Rescan(重新扫描)按钮。请注意,现在不再显示扩展名为 EX5 的文件。可以滚动屏幕,与编辑文件前的屏幕进行比较。
到目前为止,我们还没有做什么特别的事情,我们只是告诉了 GIT 存储库的位置和它应该过滤的内容。重要提示:保存内容时,无需保存 MQL5 文件夹中的所有内容。只需保存 .GIT 文件夹,GIT 跟踪的所有内容就都会被保存下来。这样可以节省很多空间。但如上所述,您可以通过 GITHUB 将所有内容保存在云端。保存的内容正是 .GIT 文件夹中的版本库。
但是,我们什么时候才能开始用 GIT 保存东西呢?别着急,亲爱的读者,我们就快成功了,还有一些小细节需要配置。要进行这些最终设置,请选择下图中标记的命令:
将出现一个新窗口。这个窗口可以在下面看到,有一些东西似乎是重复的。但它不是重复的,仔细看。
如你所见,标记了两个地方:一个在右边,一个在左边。在左边的选项中,我们将配置有关该版本库的数据,而在右边的选项中,我们将执行全局配置,即针对创建的任何版本库。您可以设置其中一个,也可以设置另一个,或者根据需要同时设置两个。但我建议将配置设为全局配置,这样就不必每次都这样做了。因此,请在显示的字段中输入您的详细信息。这样,我们就完成了最基本的设置,进入下一个主题。
创建第一个 COMMIT
现在我们已经完成了基本设置,还有一些事情需要了解。在 GIT 中,文件主要有三种状态。
- 第一种称为 COMMITTED(已提交),即文件及其所有数据安全地存储在存储库中。
- 第二种状态是 MODIFIED(已修改),即文件已被修改,但修改内容尚未保存到版本库中。
- 第三个也是最后一个状态是 STAGED(已暂存),我们在这里告诉 GIT,文件已经准备好保存到版本库中了。
为了更好地理解这些条件的含义,请看下图。我们有一个 ExpertMACD.mq5 文件,它处于 UNSTAGED 状态,也就是说,GIT 没有跟踪它。
让 GIT 开始跟踪该文件的更改,为此请点击它。请注意,在右侧区域,我们可以看到文件的当前内容:
在文件内容的顶部,你可以看到 UNTRACKED (未被跟踪)字样,这意味着该文件尚未被 GIT 跟踪。要让 GIT 查看文件,需要使用下面的方法:
使用它或 CTRL+T 快捷键,我们将得到下图所示的结果:
看看情况发生了怎样的变化。现在,文件内容的顶部出现了 STAGED FOR COMMIT (已暂存用于提交)字样,也就是说,文件处于第三种状态,可以保存了。如果不需要添加该文件,只需选择该文件并按下 CTRL+U,即可退出 STAGED 模式并返回 UNTRACKED 模式。注意:可以通过其他方式删除文件;有关详细信息,请参阅文档。在这里,我想让事情尽可能简单。
因此,让我们把所有内容放在一个头文件中。我们得到的结果如下:
现在,只需点击 COMMIT 按钮,就可以创建第一个 COMMIT。不过,建议在按下 COMMIT 按钮之前为提交添加一条描述信息,这样做非常合适。这将使以后的查找和理解更改变得更加容易。
上图显示了提交的注释。然后,点击 COMMIT 按钮,GIT 就会开始跟踪指定的文件。结果会是这样的:
标记区域显示 GIT 已成功创建 COMMIT,现在将开始跟踪这些文件。现在可以关闭 GIT GUI 窗口了。在代码上下功夫,按照自己的喜好进行测试和修改,当你完成并拥有一个稳定的版本时,你将需要请求 GIT 更新版本库。为了避免混淆,让我们在另一个选项中讨论这个问题。
实现存储库
在许多情况下,使用 BASH 更容易实现版本库,但我会向您展示如何通过 GIT GUI 来实现。为此,请使用下图所示的按钮:
点击后,GIT 会检查跟踪文件中的更改位置和内容。并将以 UNSTAGED 的形式再次显示,您可以从上图中看到。请注意,文件处于 "MODIFIED"(已被修改)状态。在文件内容窗口中,GIT 会显示已更改的内容。变化显示为绿色。您可以根据需要更改颜色。不过,由于我在这里只谈了一些基本的东西,如何做出这种修改还得靠你们自己。
现在,您可以决定是接受并保存当前的修改,还是忽略它。因为如果有必要,GIT 可以将文件恢复到之前的状态。可以将其视为 Windows 中的恢复点选项。因此,必须在每个新 COMMIT 中附上解释性信息。
现在,让我们接受并保存更改。看看我们添加适当注释并按下 COMMIT 按钮后会发生什么:
为什么呢?原因是这些更改还没有进入 STAGED 状态,即还没有准备好让 GIT 记录,而是处于 MODIFIED 状态。要将处于 MODIFIED 状态的文件添加到 STAGED 状态,只需按下CTRL+I。但从下图中可以看到一个细节:
如果选择 "YES",所有文件(此处为所有 403 个文件)都将添加到 STAGED 状态。但由于我们只想添加已跟踪和已修改的文件,因此需要点击 "NO"。那么我们就可以得到如下结果:
现在,您可以点击 COMMIT 按钮,GIT 将记录这些更改。现在大家应该清楚了,GIT 只记录版本库中处于 STAGED 状态的文件,所有其他文件将被忽略。嗯,这个话题很简单。接下来,如果我们因为代码混乱而想要恢复更改,该怎么办?GIT 如何帮助我们做到这一点?让我们进入下一个主题。
恢复更改...
要撤销已经做出的更改并恢复 GIT 在版本库中记录的内容非常容易。您需要执行上一节所述的相同步骤。因此,我们应该看到如下图所示的变化:
请注意,上图中突出显示了一个新变化。但我们想取消它,并要求 GIT 取消它。可以使用键盘快捷键CTRL+J或下图所示更方便的快捷键进行请求:
GIT 总是会要求您确认您的操作。如下图所示:
如果您确认,GIT 会将文件内容还原到版本库的顶部。如果文件是在 MetaEditor 中打开的,您会发现 MetaEditor 会要求您重新加载文件。重新加载后,你会看到 GIT 已删除了更改。了解这里所描述的过程对于理解下一个主题非常重要。
将代码还原到更稳定的版本
也许这就是最有用的东西之一:回到代码更稳定的版本。如果不使用 GIT,要做到这一点是非常困难的,在某些情况下甚至是不可能的,这意味着你必须删除所有代码并从头开始。然而,有了 GIT,一切都变得非常简单明了。要返回到这样的版本,可以使用下面显示的选项之一:
这将会打开以下窗口:
现在我们来看看为什么在提交中添加解释性注释总是很重要。它们可以使用户更容易理解更改并找到稳定版本。这样,您就可以查看所有版本,并准确选择要恢复的版本。选择版本后,您需要右键单击并选择标记的项目:
完成后,将打开一个新窗口。在这里,您需要小心谨慎。如果您不想从版本库中删除任何内容,请选择下图所示的选项:
这一操作的结果如下:
请注意,资源库的顶部已发生变化。这正是我们所需要的,因为资源库的顶部展示了我们可以在代码中还原的内容。现在回到图形用户界面窗口,选择下图所示的选项:
这将把版本库顶部的所有代码(现在是旧版本)转移到相应的文件中。注意:如果有文件已被删除,GIT 会重新创建它。因此,了解资源库的顶部结构非常重要。否则,您将无法返回到以前的版本。在应用更改之前,您需要确认操作,如下图所示:
现在我们知道如何返回到早期版本了。现在,如果你退得太远了怎么办?如何返回到新一点的版本?为了避免混淆,让我们在一个新的主题中讨论这个问题。
恢复到版本库中的较新版本
有时,当我们回滚到一个更稳定的版本时,我们会走得太远,不得不回滚到一个新一些的版本。为了说明这一点,让我们创建第三个层级。由于只使用了两级,因此无法通过图形用户界面了解如何操作。使用 BASH,只需向 GIT 发送一条命令,就能直接实现这一功能。但我想向你展示如何通过图形用户界面来实现。因此,假设我们有以下情况。
现在我们有三个层级。让我们回到第一层,结果如下图所示。操作步骤如前所述。
想象一下,在这个地方,我们已经倒退了太多。然后,我们需要进入第二层,检查代码是否有效。在这种情况下该怎么办?这很有趣,有几种方法可以解决这个问题。千万不要惊慌失措,在了解如何做到这一点之前,我们先来看看一个可能很重要的小细节。如果你查看 .GIT 文件夹,可能会发现一个以前不存在的文件。请看下图。
该文件的内容是一个 HASH,它用于在出现严重错误时恢复 GIT 代码库中的可用数据。您可以通过查看下图中的内容来了解 HASH:
在此,我们将不详细介绍如何使用 HASH 文件,因为所有这些内容都在文档中,互联网上也有许多详细的指南。让我们回到如何获取第二层数据的问题上来。我们需要选择第二层,使其成为存储库的顶层。总是像这样的。不过,请注意不要误选 "HARD"(硬)模式,应始终优先使用 "SOFT"(软)模式。如下图所示。
正确选择选项后,您将得到以下结果:
这样就可以访问最新的代码。您可以通过这种方式在 GIT 存储在我们版本库中的版本之间进行切换。但假设您想删除并丢弃最新的更改,您就应选择以下选项:
结果如下:
还有一个命令需要考虑。假设您下载了或想从备份中恢复整个版本库。原因并不重要,您只是想在从磁盘中删除之前,还原在版本库中找到的最新版本。您可以逐个文件进行操作,但是您也可以使用下图所示的选项:
选择该选项时,将还原存储库的全部内容。就像变魔术一样,所有文件和目录都会再次出现。需要还原作为备份保存的整个版本库时,请使用此选项。这样,您就可以迅速回到项目工作中。
最终结论
在本文中,我展示了使用 GIT 所需的最基本方面。我希望这篇文章能成为进一步学习和自我完善的动力。因为有不同的工具,您不应该等着别人来教您如何使用。您必须时刻准备学习新知识。不要以为 GIT 只像我在这里展示的那样。它是一个更强大的工具,可以为您提供很多帮助。至少我希望我能激发你对 GIT 的兴趣。
本文由MetaQuotes Ltd译自葡萄牙语
原文地址: https://www.mql5.com/pt/articles/12516