【问题标题】:How is a branch different from a folder, in a GitHub repository?GitHub 存储库中的分支与文件夹有何不同?
【发布时间】:2015-06-16 07:00:47
【问题描述】:

我是 GitHub 的新手,我并不完全了解分支是什么。我感觉它就像一个文件夹。请解释一下:文件夹和分支到底有什么区别?

【问题讨论】:

  • “文件夹”是什么意思?你能详细说明一下吗?
  • @NoufalIbrahim 可以通过这里的快速回答来解释,就像我一样。您可以添加我忘记的任何内容。我还建议不要阅读全面的 git 教程,因为我的目标是发布产品,而不是学习 git。学习 git 可以按需学习,比如通过 Stack Overflow
  • @VaddadiKartick 我们必须同意不同意。我认为快速答案有助于更高级别的实施问题。通过花一些时间学习而不是在 SO 上寻找可剪切/可粘贴的解决方案,最好的办法是从根本上缺乏对基础知识的了解。你注意到提问者想要的是概念上的澄清,而不是特定问题的解决方案。这最好通过阅读有关该主题的书籍而不是快速回答来获得。
  • 问答形式也适用于概念性问题。谁说它只针对实施问题?在问答网站上,您应该像我所做的那样回答这个问题,而不是通过要求他本质上是 RTFM 来对 OP 进行演讲。我就这样吧。

标签: git github git-branch


【解决方案1】:

到目前为止,答案很好;我会加我的两分钱。你已经知道什么是文件夹,那么接下来我们要考虑什么是提交。提交是文件夹的快照——具体来说,是某个时间点存储库的根文件夹。分支只是一个提交的指针。看看下面这张来自优秀Git book的图片:

在这张图片中,灰色框是提交。您可以看到每个文件夹都有自己的主文件夹快照。橙色框是分支 - 请注意它们只是指向提交的指针。在这种情况下,有两个分支(v1.0master),它们都恰好指向同一个提交。 HEAD 指向您当前所在的分支。因此,如果您要在上述情况下进行新提交,master 将指向该新提交,其父级将是 f30abv1.0 仍将指向 f30ab

因此,虽然从不同的分支可以“包含”不同(版本)文件的意义上说,分支在某种程度上可以起到文件夹的作用,但实际上是包含这些不同(版本)文件的不同提交,并且分支只是指向一次提交。

顺便说一句,正如其他人所提到的,你真的应该阅读Git book。了解基础知识后,使用 Git 会更加愉快。

【讨论】:

  • +1 阅读 Git 书籍,它不仅可以帮助您了解内部原理,还可以提供有关其命令和工具的作用以及何时使用它们的推理。值得花一个小时左右的时间阅读。
【解决方案2】:

在某种程度上,它们都是文件集。但是,它们的概念来自不同的环境,用法也大不相同。

文件夹是文件系统的一项功能。我希望我不必解释更多,因为它是一个基本的计算概念。您可以嵌套文件夹,它们没有关于版本控制系统的特殊功能(主要是历史记录)。

分支是版本控制系统的一项功能。它允许您一次管理更多的开发任务。它们包含历史记录,您可以随时检查它们从哪个提交转移。但是,您不能将它们嵌套在 Git 中。

我将开始在 https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging 上学习如何在 Git 中使用分支。

【讨论】:

    【解决方案3】:

    阅读 article 以了解 github 的工作原理。

    一个分支就像一个正在进行的工作,你复制你的主要代码(或其中的一部分)进行更改(添加新功能或修复错误),当你测试它工作得很好时,你合并它回到主分支。所以整个想法基本上是有一个开发分支和一个稳定的工作分支,如果在更改期间出现问题,您可以使用它们。

    【讨论】:

    • 如果链接断开,您的回答会怎样?
    • 虽然你的答案没有错,但我认为它不能完全回答 OP。
    【解决方案4】:

    正如 Melebius 所说,它们都是保留两个不同版本代码的方法。

    文件夹是文件系统的一个特征。

    分支是版本控制系统的一项功能,这意味着 Git 会跟踪您在版本历史中创建它的位置。

    Git 允许您将分支合并回主线,将它们合并。您可能会创建一个分支来处理可能会或可能不会成功的事情,进行多次提交,直到您使其进入工作状态,此时您合并。

    或者将单个提交从主线移动到分支,反之亦然。当您对分支进行错误修复时,您可能会使用它,您后来意识到也适用于主线。

    文件夹的所有这些好处都消失了。


    另一方面,文件夹有其自身的好处,例如:

    • 您已经知道如何使用它们了。
    • 如果您想对两个文件夹进行比较,可以使用递归比较工具。但是要区分两个 Git 分支,您需要一个专为 Git 设计的工具,而您的可能不是。
    • 您可以在 IDE 的两个窗口中打开两个文件夹中的项目并手动比较它们,或者将更改从一个文件夹逐个应用到另一个文件夹。
    • 使用分支时,我有时会不小心提交到错误的分支。通过文件夹,我学会了检查我已提交到哪个文件夹。
    • 您可以在 Mac 上使用 Spotlight 或在命令行上使用 grep 来搜索某些内容,例如类名,它会在所有文件夹中找到,但不会在所有分支中找到。
    • 分支要求您遵循特定于 Git 的过程来跟踪远程分支,或者在推送创建新本地分支的提交时创建远程分支。
    • 如果您的存储库太大,很容易看出哪些文件夹占用了空间。

    【讨论】:

      猜你喜欢
      • 2020-06-17
      • 2016-04-01
      • 2023-03-16
      • 2017-04-03
      • 2020-12-11
      • 2023-04-02
      • 2021-09-29
      • 2021-05-13
      • 1970-01-01
      相关资源
      最近更新 更多