3

我正在阅读这篇文章,并且在大多数情况下,我明白了。我想我理解变基(它可以获得更线性的 git 日志历史记录,而无需进行只是三向提交的提交)我也认为我理解 git 图。但是段子里有几句话我没看懂。

您会在该合并中注意到“快进”一词。因为你合并的分支指向的提交直接 在你所在的提交的上游,Git 只是将指针向前移动。换一种说法,当您尝试将一个提交与可以通过遵循第一个提交的历史到达的提交合并时,Git 通过向前移动指针来简化事情,因为没有不同的工作可以合并在一起——这被称为“快进。”</p>

您的更改现在位于 master 分支指向的提交的快照中,您可以部署修复。

我不明白的是术语上游,指针和最后一句话。

在图中,为什么 hotfix 上方的红色主框是?

4

1 回答 1

5

上游的

git 的一个重要方面是它是分布式的,而分布式很大程度上意味着系统中没有固有的“上游”或“下游”。这仅仅意味着没有绝对的上游回购或下游回购。

这些概念在两个存储库之间始终是相对的,并且取决于数据流动的方式:

如果“ myLocalRepo”已将“ ”声明companyRepo为远程,则:

你是从上游“ companyRepo”拉的(“ companyRepo”是“你的上游”,你是“下游的companyRepo”)。您正在推送到上游(“ companyRepo”仍然是“上游”,信息现在返回到那里)。请注意“来自”和“为”:您不仅仅是“下游”,您是“来自/为下游”,因此是相对方面。

指针

它实际上具有相同的含义,就像它在计算机编程中一样。指针是内存中地址的指示符。

在 Git 世界中,许多实现实际上是用Pointers.

例如,HEAD它是一个实际的指针,它始终指向您已签出到的当前分支上的最后一次提交。这同样适用于tagsreflog结果。

在图中,为什么 hotfix 上方的红色主框是?

让我们只专注于解释fast-forward

当您尝试将一个提交与通过遵循第一个提交的历史可以到达的提交合并时,Git 通过将指针向前移动来简化事情,因为没有不同的工作可以合并在一起——这被称为“快进”。< /p>

图表和解释试图解释,当你创建一个新分支时,你拥有最后一个分支的所有提交历史。现在您继续在新分支上工作,例如进行 3 次新提交。与最后一个分支合并时,git 不必将所有新的分支提交历史复制回来。相反,它只需复制三个新提交并将HEAD指针移动三个提交即可完成合并。这称为快进机制。

红色框包含了创建master新分支之前的所有历史记录。hotfix现在,当合并发生时,master 和 hotfix 都指向同一个提交。

主红框实际上在时间上比修补程序更早,并且是hotfix分支创建的参考点。

于 2016-03-09T06:06:25.460 回答