Git中的工作树和仓库有什么区别?

k2arahey  于 2023-08-01  发布在  Git
关注(0)|答案(3)|浏览(153)

仓库工作树有区别吗?

这两个定义告诉我们工作树和仓库是项目的文件
Github中的repository定义:
存储库包含项目的所有文件以及每个文件的修订历史。您可以在存储库中讨论和管理项目的工作。
即“craftquest”网站中的工作树定义:
Git中的工作目录树是你的文件系统上的一个目录(及其文件和子目录),它与一个存储库相关联。

zazmityj

zazmityj1#

您可以将存储库视为项目的“数据库”,它存储所有文件以及对这些文件的更改历史。
另一方面,工作树,也称为工作目录,是对应于项目的单个 checkout /版本的文件集。
主要区别在于其功能:仓库(在像Git这样的版本控制系统中)用于存储和跟踪项目的历史版本,而工作树是项目的当前可编辑副本。

vx6bjr1n

vx6bjr1n2#

不要忘记,正如我在Git 2.5 (July 2015)中提到的,您还拥有多个工作树。
一个git仓库可以支持多个工作树,允许你一次 checkout 多个分支。
使用git worktree add,一个新的工作树与存储库相关联。
这个新的工作树被称为“链接工作树”,与“git init”或“git clone”准备的“主工作树”相对。
一个仓库有一个主工作树(如果它不是裸仓库)和零个或多个链接的工作树。

lf5gs5x2

lf5gs5x23#

它们是完全不同的东西。

  • repository 不可见。Git存储历史的地方。
    • 工作树 * 可见。这是你创造历史的地方。

我的https://www.biteinteractive.com/picturing-git-conceptions-and-misconceptions/
我喜欢说Git实际上有三个世界:

仓库。我把仓库想象成(主要)由存储的提交组成。这些是反映你工作过去版本的 * 快照 *。
索引。这是您配置要进入 * 下一次 * 提交的内容的地方。
工作树这些文件是Git从仓库借给你的,这样你就可以编辑它们,然后将它们添加到索引中,以便告诉Git索引(以及下一次提交)应该是什么样子的。工作树是该空间坐标系中唯一可以直接看到的部分。

相关问题