gpt4 book ai didi

git - 应该在哪里创建 git 存储库?

转载 作者:IT王子 更新时间:2023-10-29 00:57:08 25 4
gpt4 key购买 nike

是否可以在受版本控制的文件夹内创建 git 存储库,还是应该将存储库放在该文件夹之外?或者有可能吗?存储库位置重要吗?

最佳答案

在这一点上添加第六个答案可能有点徒劳,但我为教程写了类似这样的东西,我认为这个问题的答案清楚地解释裸和非裸的标准布局很重要存储库。

通常对于 git,您将使用一个非裸仓库,或者一个带有工作树的仓库。默认情况下,包含 .git 目录的目录将位于该存储库的工作树的顶层。例如,如果您在名为 toaster-simulator 的目录中创建了这样一个存储库,那么目录结构可能如下所示:

toaster-simulator/
.git/
HEAD
config
index
objects/
refs/
...
README
Makefile
src/
toaster.c

在你的仓库的顶层只有一个.git目录。1这个目录包含你仓库的全部历史,它的所有分支,对象组成历史记录中每个提交的每个文件等(例如,.git/objects 目录包含将对象名称映射到文件、提交等的数据库;HEAD 指向您当前的分支;等等)您永远不应该手动删除或更改此目录中的文件,否则您将面临损坏存储库的风险。 .git 目录之外的所有内容都是您的工作树。在开发项目时,您只需照常编辑这些文件即可。

对于刚接触 git 的人来说,最令人惊讶的事情可能是如果你从一个分支切换到另一个分支,你的工作树中的文件可能会完全改变。尽管您第一次看到它时可能会感到震惊,但这是一个很棒的功能 - 您几乎不需要在计算机上拥有一个以上的存储库副本,因为从一个分支切换到另一个分支是如此快速和容易。 (为了防止你丢失数据,如果你在你的工作树中有没有记录在提交中的更改,git 将阻止你像这样切换分支,并且这些更改位于文件中,这些文件将以任何方式被分支的切换。一旦你创建了一个特定状态的文件提交,git 就很难让你丢失这些文件。)

另一种类型的存储库是裸存储库,它本质上类似于.git 目录,但没有工作树。你通常会把它用于一个存储库,许多人将把他们的更改推送到这个存储库——你不会在这个存储库上开发,所以工作树只会妨碍。按照惯例,您会使用项目名称和 .git 扩展名来命名包含裸存储库的目录。例如,在远程服务器上,您可能有一个像这样的 toastr 模拟器项目的裸存储库:

toaster-simulator.git/
HEAD
config
index
objects/
refs/
...

当您第一次使用 git 时,您可能不需要使用裸存储库,但最好了解它们。当您询问有关能够在您的工作树之外拥有存储库的问题时,它们很可能是您用来与其他人共享代码的裸存储库。

我在上面描述了常规的存储库布局,但实际上 git 目录和工作树可以是文件系统上的任意两个目录,如果你使用特定的环境变量或 git 选项 - 然而,这超出了基本的 git 用法:)

脚注

1 实际上,可以有嵌套的存储库,每个存储库都有自己的 .git 目录,例如,使用 git 的子模块功能。但是,鉴于您的问题,您暂时不必担心。

关于git - 应该在哪里创建 git 存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5510918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com