【问题标题】:Is staging area cloned as part of git clone?暂存区是否被克隆为 git clone 的一部分?
【发布时间】:2015-03-30 21:14:53
【问题描述】:

假设 DeveloperA 在 git 存储库(在他的计算机上本地)上工作,并且还有一些文件暂存在索引中以供下一次提交。 如果 DeveloperB 然后通过“git clone”命令克隆这个仓库,他是否也会从 developerA 的仓库中收到暂存区的内容?

【问题讨论】:

  • DeveloperB 不会从 DeveloperA 收到任何东西,直到 DeveloperA 提交并将他们的工作推送到原点。
  • @vcsjones 这是不正确的。将developerB视为原点的提问者。
  • 啊,我误会了。很好的收获。

标签: git git-clone


【解决方案1】:

不,当其他开发人员克隆存储库时,只会包含已提交的文件和更改。

如果 DeveloperB 从远程存储库而不是 DeveloperA 的存储库进行克隆,则 DeveloperA 必须提交并推送任何更改到该远程存储库,以便 DeveloperB 能够克隆或提取它们。

您可以在the documentation 中阅读有关git clone 如何工作的更多信息。

【讨论】:

    【解决方案2】:

    简单,简短的回答:不。 Stackoverflow 要求答案中至少有 30 个字符,因此这句话。

    【讨论】:

    • 这个要求是有原因的,以防止这样的无用答案。
    • @JustinHoward 'No' 对于像这样的是/否问题,这似乎是一个完全可以接受且有用的答案。
    【解决方案3】:

    不。该索引用于跟踪特定工作树中发生的情况。这是一个 sha 的路径名索引列表,显示对象 db 中的哪些内容在哪里。它也是 git 存储有关飞行操作的注释的地方,但它都是非常简单的东西:索引只是一个清单,一个索引列表。克隆复制了对象 db 和一系列引用(分支和标签),就是这样。

    要将内容添加到存储库,请git add 它,然后 git 添加它,然后将添加的内容的 sha 写入其路径的索引条目。

    我避免使用“暂存区”一词,就好像它是有毒废物一样。如果您正确地看待它,那么它在合理的意义上是准确的,但对于那些还不知道索引是什么的人来说,这是可怕的误导。

    【讨论】:

    • 我发现相反。如果我使用暂存区域而不是索引,那么刚接触 git 的人似乎会更好地了解。
    • @AndrewC 我发现人们用这种方式更 comfortable,但它会导致例如 OP 之类的问题,这是由暂存区应该容纳的想法引起的内容。从“不,只是一个列表”领域开始,虽然有些人或许多人可能难以适应 git 可能如此简单的概念,但他们至少不会迷失在杂草中。
    • @AndrewC 这可能只是我持有这个观点的时间足够长,其他任何对我来说都很难,但例如我不知道如何向任何认为索引的人解释this是一个暂存区,而没有首先解释它不是一个暂存区,这是一个相当恒定的主题,我在这里看到的问题,人们甚至没有检查选项或拒绝涉及简单索引工作的想法,因为他们错误地将其视为重量级或从未感受过他们之前很清楚。
    • 嗯。我一直将其视为构建下一次提交内容的地方,而暂存区一直是我所有情况下的理论概念。
    • @AndrewC 但您已经知道索引是什么,以及提交包含什么。我反复遇到的错误是那些认为索引实际上包含 blob 内容的人——这种误解直到后来才造成麻烦,因为它实际上并没有对通常的日常工作产生任何真正的影响——日工。有趣的对话,谢谢。
    猜你喜欢
    • 2021-09-01
    • 2019-09-16
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    • 2017-06-05
    • 2021-09-03
    • 1970-01-01
    • 2012-07-31
    相关资源
    最近更新 更多