在 GitHub 存储库中,分支与文件夹有何不同?
How is a branch different from a folder, in a GitHub repository?
我是 GitHub 的新手,我不太了解什么是分支。我感觉它就像一个文件夹。请解释:文件夹和分支到底有什么区别?
阅读 article 以了解 github 的工作原理。
分支就像一个正在进行的工作,你复制你的主要代码(或它的一部分)进行更改(添加新功能或修复错误)并且当你测试它时它工作得很好您将其合并回主分支。所以整个想法基本上是有一个开发分支和一个稳定的工作分支,如果在更改过程中出现问题,您可以使用它们。
从某种意义上说,它们都是一组文件。但是他们的概念来自不同的环境,用法也大不相同。
一个文件夹是文件系统的一个特性。我希望我不必解释更多,因为它是一个基本的计算概念。您可以嵌套文件夹,它们在版本控制系统(主要是历史记录)方面没有特殊功能。
A branch 是版本控制系统的一个特性。它允许您一次管理更多的开发任务。它们包含历史记录,您可以随时检查它们从哪个提交转移。但是,您不能将它们嵌套在 Git.
中
我将在 https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging 开始学习如何使用 Git 中的分支。
目前回答得很好;我会加上我的两分钱。您已经知道什么是文件夹,那么接下来我们要考虑什么是提交。提交是文件夹的快照 - 具体来说,是某个时间点存储库的根文件夹。分支只是指向提交的 指针 。看看下面这张来自优秀 Git book 的图片:
在这张图片中,灰色框是提交。您可以看到每个文件夹都有自己的主文件夹快照。橙色框是分支——请注意它们只是指向提交的指针。在这种情况下,有两个分支(v1.0
和 master
),它们都恰好指向同一个提交。 HEAD
指向您当前所在的分支。因此,如果您要在上述情况下进行新提交,master
将指向该新提交,其父级为 f30ab
。 v1.0
仍会指向 f30ab
.
因此,虽然分支在某种意义上可以像文件夹一样工作,因为不同的分支可以 "contain" 不同的(版本的)文件,但实际上是不同的提交包含这些不同的(版本的)文件,并且分支只是指向一个提交。
顺便说一句,正如其他人所提到的,您真的应该阅读 Git book。当您了解基础知识后,使用 Git 会更加愉快。
正如 Melebius 所说,它们都是保留两个不同版本代码的方法。
文件夹是文件系统的一个特性。
分支是版本控制系统的一项功能,这意味着 Git 跟踪您在版本历史记录中的哪个点创建它。
Git 允许您将分支合并回主线,合并它们。您可能会创建一个分支来处理可能会或可能不会成功的事情,进行多次提交直到您使其进入工作状态,此时您将合并。
或者将单个提交从主线移动到分支,反之亦然。当您对分支进行错误修复时,您可能会使用它,您后来意识到它也适用于主线。
所有这些好处都随着文件夹消失了。
另一方面,文件夹有其自身的优势,例如:
- 您已经知道如何使用它们了。
- 如果你想比较两个文件夹,可以使用递归比较工具。但是要区分两个 Git 分支,您需要一个专为 Git 制作的工具,而您的可能不是。
- 您可以在 IDE 的两个 windows 中的两个文件夹中打开项目并手动比较它们,或者将更改从一个文件夹一个一个地应用到另一个文件夹。
- 对于分支,我有时会不小心提交到错误的分支。使用文件夹,我学会了检查我已提交到哪个文件夹。
- 您可以在 Mac 上使用 Spotlight 或在命令行上使用 grep 来搜索某些内容,例如 class 名称,它会在所有文件夹中找到,但不会在所有文件夹中找到分支机构。
- 分支要求您遵循 Git 特定的过程来跟踪远程分支,或者在您推送创建新本地分支的提交时创建远程分支。
- 如果您的存储库变得太大,很容易看出哪些文件夹正在占用 space。
我是 GitHub 的新手,我不太了解什么是分支。我感觉它就像一个文件夹。请解释:文件夹和分支到底有什么区别?
阅读 article 以了解 github 的工作原理。
分支就像一个正在进行的工作,你复制你的主要代码(或它的一部分)进行更改(添加新功能或修复错误)并且当你测试它时它工作得很好您将其合并回主分支。所以整个想法基本上是有一个开发分支和一个稳定的工作分支,如果在更改过程中出现问题,您可以使用它们。
从某种意义上说,它们都是一组文件。但是他们的概念来自不同的环境,用法也大不相同。
一个文件夹是文件系统的一个特性。我希望我不必解释更多,因为它是一个基本的计算概念。您可以嵌套文件夹,它们在版本控制系统(主要是历史记录)方面没有特殊功能。
A branch 是版本控制系统的一个特性。它允许您一次管理更多的开发任务。它们包含历史记录,您可以随时检查它们从哪个提交转移。但是,您不能将它们嵌套在 Git.
中我将在 https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging 开始学习如何使用 Git 中的分支。
目前回答得很好;我会加上我的两分钱。您已经知道什么是文件夹,那么接下来我们要考虑什么是提交。提交是文件夹的快照 - 具体来说,是某个时间点存储库的根文件夹。分支只是指向提交的 指针 。看看下面这张来自优秀 Git book 的图片:
在这张图片中,灰色框是提交。您可以看到每个文件夹都有自己的主文件夹快照。橙色框是分支——请注意它们只是指向提交的指针。在这种情况下,有两个分支(v1.0
和 master
),它们都恰好指向同一个提交。 HEAD
指向您当前所在的分支。因此,如果您要在上述情况下进行新提交,master
将指向该新提交,其父级为 f30ab
。 v1.0
仍会指向 f30ab
.
因此,虽然分支在某种意义上可以像文件夹一样工作,因为不同的分支可以 "contain" 不同的(版本的)文件,但实际上是不同的提交包含这些不同的(版本的)文件,并且分支只是指向一个提交。
顺便说一句,正如其他人所提到的,您真的应该阅读 Git book。当您了解基础知识后,使用 Git 会更加愉快。
正如 Melebius 所说,它们都是保留两个不同版本代码的方法。
文件夹是文件系统的一个特性。
分支是版本控制系统的一项功能,这意味着 Git 跟踪您在版本历史记录中的哪个点创建它。
Git 允许您将分支合并回主线,合并它们。您可能会创建一个分支来处理可能会或可能不会成功的事情,进行多次提交直到您使其进入工作状态,此时您将合并。
或者将单个提交从主线移动到分支,反之亦然。当您对分支进行错误修复时,您可能会使用它,您后来意识到它也适用于主线。
所有这些好处都随着文件夹消失了。
另一方面,文件夹有其自身的优势,例如:
- 您已经知道如何使用它们了。
- 如果你想比较两个文件夹,可以使用递归比较工具。但是要区分两个 Git 分支,您需要一个专为 Git 制作的工具,而您的可能不是。
- 您可以在 IDE 的两个 windows 中的两个文件夹中打开项目并手动比较它们,或者将更改从一个文件夹一个一个地应用到另一个文件夹。
- 对于分支,我有时会不小心提交到错误的分支。使用文件夹,我学会了检查我已提交到哪个文件夹。
- 您可以在 Mac 上使用 Spotlight 或在命令行上使用 grep 来搜索某些内容,例如 class 名称,它会在所有文件夹中找到,但不会在所有文件夹中找到分支机构。
- 分支要求您遵循 Git 特定的过程来跟踪远程分支,或者在您推送创建新本地分支的提交时创建远程分支。
- 如果您的存储库变得太大,很容易看出哪些文件夹正在占用 space。