“下游”和“上游”的定义

“下游”和“上游”的定义

我已经开始玩Git并遇到过“上游”和“下游”这两个词。我之前见过这些,但从未完全理解它们。这些术语在SCM(软件配置管理工具)和源代码的上下文中意味着什么?



弑天下
浏览 3726回答 3
3回答

一只萌萌小番薯

在源代码控制方面,当您从存储库复制(克隆,签出等)时,您处于“ 下游 ”。信息流向“下游”给您。当您进行更改时,您通常希望将它们发送回“ 上游 ”,以便它们进入该存储库,以便从同一来源拉出的每个人都在处理所有相同的更改。这主要是每个人如何协调工作而不是源控制技术要求的社会问题。您希望将更改纳入主项目,这样您就无法跟踪不同的开发线。有时您会阅读有关提交“上游”更改的包或发布经理(人员,而不是工具)。这通常意味着他们必须调整原始来源,以便他们可以为他们的系统创建一个包。他们不想继续进行这些更改,因此如果他们将它们“上游”发送到原始源,他们就不必在下一个版本中处理相同的问题。

暮色呼如

当您在git tag手册页中阅读时:git的一个重要方面是它是分布式的,并且分布很大意味着系统中没有固有的“上游”或“下游”。,这仅仅意味着没有绝对的上游回购或下游回购。这些概念在两个回购之间总是相对的,取决于数据的流动方式:如果“yourRepo”已将“otherRepo”声明为远程,则:您正在从上游拉 “otherRepo”(“otherRepo”是“上游从你”,你是“下游用于 otherRepo”)。你正推向上游(“otherRepo”仍然是“上游”,现在信息可以回到上游)。注意“从”和“为”:你不仅仅是“下游”,你是“下游/为 ”,因此相对方面。DVCS(分布式版本控制系统)扭曲是:你不知道下游实际上是什么,除了你自己的repo相对于你声明的远程仓库。你知道上游是什么(你正在拉动或推动的回购)你不知道下游是由什么组成的(另一个回购拉动或推动你的回购)。基本上:在“ 数据流 ”方面,您的仓库位于来自上游回购(“拉出”)并返回(相同或其他)上游回购(“推送到”)的流的底部(“下游”) )。您可以在git-rebase手册页中看到“从上游重新恢复”段落中的插图:这意味着你正在从一个发生rebase的“上游”仓库中撤出,而你(“下游”仓库)仍然存在后果(许多重复提交,因为上游的分支重新创建了同一分支的提交你在当地)。这是不好的,因为对于一个“上游”回购,可能有许多下游回购(即从上游回收利用重新分支的回购),所有这些都有可能处理重复提交。同样,对于“数据流”类比,在DVCS中,一个坏命令“上游”可以在下游具有“ 波纹效应 ”。注意:这不仅限于数据。它也适用于参数,因为git命令(如“瓷器”命令)经常在内部调用其他git命令(“plumbing”命令)。见rev-parse手册页:许多git ceramicish命令混合使用标志(即以短划线开头的参数-)和参数,这些参数用于git rev-list内部使用的基础命令,以及它们在下游使用的其他命令的标志和参数git rev-list。此命令用于区分它们。
打开App,查看更多内容
随时随地看视频慕课网APP