我是GitHub的新手,我并不完全明白分支是什么。我感觉它就像一个文件夹。请解释一下:文件夹和分支之间究竟有什么区别?
答案 0 :(得分:4)
到目前为止答案很好;我加两分钱。您已经知道文件夹是什么,因此接下来我们必须考虑提交的内容。提交是文件夹的快照 - 特别是某个时间点的存储库的根文件夹。分支只是提交的指针。请查看优秀Git book:
中的以下图片
在这张图片中,灰色框是提交。您可以看到每个都有自己的主文件夹快照。橙色框是分支 - 请注意它们如何只是提交的指针。在这种情况下,有两个分支(v1.0
和master
),它们都碰巧指向同一个提交。 HEAD
指向您当前所在的分行。因此,如果您要在上述情况下进行新的提交,master
将指向新的提交,其父级将为f30ab
。 v1.0
仍会指向f30ab
。
因此,虽然分支可以在某种程度上像文件夹一样,不同的分支可以包含"不同的(版本)文件,实际上它是包含这些不同(版本)文件的不同提交,而分支只是指向提交。
正如其他人所提到的那样,你应该真正阅读Git book。当你了解基本原理时,与Git合作会更加愉快。答案 1 :(得分:1)
在某种程度上,它们都是文件集。但是,它们的概念来自不同的环境,使用方式也大不相同。
文件夹是文件系统的一项功能。我希望我不必解释更多,因为它是一个基本的计算概念。您可以嵌套文件夹,它们没有关于版本控制系统的特殊功能(主要是历史记录)。
分支是版本控制系统的一项功能。它允许您一次管理更多的开发任务。它们包含历史记录,您可以随时检查它们转移的提交。但是,你不能将它们嵌套在Git中。
我将开始学习如何在https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging上使用Git中的分支。
答案 2 :(得分:0)
阅读article以了解github的工作原理。
分支就像正在进行的工作,你制作主代码(或其中的一部分)的副本进行更改(添加新功能或修复错误),当你测试它时它完全合适你合并它回到主要分支。因此,整个想法基本上都有一个开发分支和一个稳定的工作分支,如果在更改过程中出现问题,您可以使用它。
答案 3 :(得分:0)
正如Melebius所说,它们都是保留两个不同版本代码的方法。
文件夹是文件系统的功能。
分支是版本控制系统的功能,这意味着Git会跟踪您在版本历史中创建它的时间。
Git使您可以将分支合并回到主线,并将其合并。您可能会创建一个分支来处理可能会解决或无法解决的问题,进行几次提交,直到将其恢复为工作状态为止。
或者将单个提交从主线移到分支,反之亦然。当您对分支进行了错误修复后,您可能会使用此功能,后来您意识到该分支也适用于主线。
所有这些好处随文件夹消失。
另一方面,文件夹有其自身的优点,例如: