Git 项目显示单独分支的单独文件夹结构

时间:2021-01-26 18:30:53

标签: git github

this project 提供了一个文件夹结构,其中包含一个文件夹“root”,其中包含我要使用的文件。但是当我在那里签出 user/roboyoshi branch 时,它会向我显示另一个文件夹,也名为“root”,其中包含一组单独的文件,而不是来自 master 分支的“root”。我下载了 repo,但在提取的存档中找不到分支中的文件(只有 master 分支的根文件夹中的文件)

我是 Git 的新手,我期待有一个超级文件夹,其中所有目录都存在,其中一些在每个分支的基础上隐藏,但事实并非如此。分支 user/roboyoshi 的内容究竟来自哪里?

这是我不知道的 git 功能吗(仅供参考,我是 Git 新手)其中每个分支都可以存在于单独的文件夹中,或者每个分支都被告知仅跟踪同一文件夹“根”中的特定文件?

1 个答案:

答案 0 :(得分:1)

Git 流量仅在一种实体中进行:提交。提交基本上是项目创建时整个状态的快照——它的所有文件,包括它的所有文件夹(因为文件的“名称”暗示了任何文件夹的名称包含它)。 [我在简化;实际上,您可以调整用于形成每个提交的暂存区。但请假装我说的是真的。]

提交是不可见的,并且以对您毫无意义的方式进行编码。因此,没有属于您的或您甚至可以看到的实际文件;所有的一切,都是你项目的整个状态的一系列整个表达式,隐藏在 Git 的存储库中。

然而,这对您来说不是很有用,所以每次检出提交时,包括切换到不同分支时,Git 都会将该提交的内容复制到可见区域称为工作树,以便您可以使用。

这就是这里发生的一切。你说“Git,切换到分支 a”,Git 顺从地抓取该分支上的最后一次提交,并用它包含的文件副本替换可见区域、工作树的内容——精确地复制 < em>创建提交时项目的整个状态。

将其视为随时间推移拍摄的一系列家庭照片。一些家庭成员出生;有些死了。在每个阶段,都会拍摄一张新照片,显示目前在世的家庭成员的年龄。但我们也可以进行时间旅行:我们可以将任何照片变成真实的家庭。这就是您切换分支时所做的一切:您选择一张照片并说:“我希望这个成为我当前的现实。”作为回应,照片确实被忠实地复制,以便您可以将其作为现实进行处理。如果照片中存在家庭成员,那么当您查看该照片时,该家庭成员就在您的现实中;如果照片中没有有家庭成员,那么当您查看该照片时,该家庭成员就不会出现在您的现实中。基本上就是这么简单。

相关问题