git仓库应该在哪里创建?

我在问这个问题,因为这个问题的网络搜索没有回答什么好的答案。 这是一个基本问题,可能很基本,它是无知的,但我不知道答案。 因此,扩展一下:可以在受版本控制的文件夹内创建git存储库,还是应该将存储库放置在该文件夹之外? 或者是可能的? 存储库位置是否重要?


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

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

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

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

也许对于git新手的人来说,最令人惊讶的是,如果你从一个分支切换到另一个分支,你的工作树中的文件可能会完全改变。 虽然第一次看到它时可能会令人震惊,但这是一个很棒的功能 - 因为从一个分支切换到另一个分支的速度非常快且容易,所以几乎不需要在计算机上存储多个版本库。 (为了阻止你丢失数据,git会阻止你像这样切换分支,如果你的工作树中有没有被记录在提交中的变化,并且这些变化是在任何方式被一旦你创建了一个在特定状态下文件的提交,git使你很难丢失这些文件。)

另一种类型的存储库是裸仓库 ,它基本上与.git目录相似,但没有工作树。 你通常会使用这个库作为一个仓库,许多人将推动他们的改变 - 你不会在这个仓库上开发,所以工作树会阻碍。 通常,您将命名包含裸仓库的目录,其中包含项目名称和.git扩展名。 例如,在远程服务器上,您可能有一个裸机存储库,用于toaster-simulator项目,如下所示:

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

当你第一次使用git时,你可能不需要使用仓库,但是很好的意识到它们。 当你在你的问题中询问能否在你的工作树之外拥有存储库时,他们可能是你正在用来与其他人共享代码的裸存储库。

我在上面描述了常规的资源库布局,但实际上,如果您使用某些环境变量或选项来混帐,git目录和工作树可以是文件系统上的任意两个目录 - 但是,这超出了基本的git用法:)

脚注

1实际上,可能有嵌套的存储库,每个存储库都有自己的.git目录,例如,使用git的子模块功能。 但是,考虑到你的问题,你暂时不需要担心这个问题。


git repo与您的源代码在相同的位置创建。 请记住,git不像Subversion那样在一个中央位置(例如在服务器上)有单个存储库。 相反,你的源代码目录你的git仓库,就像这样:

$ cd mysources
$ git init . 
$ git add ...

现在mysources/.git将包含git对象数据库,您可以添加/提交/分支/等。


git init会在你的项目的根目录下创建一个git仓库。 据我所知,git存储库总是在项目的根目录(或者想要进行版本控制的文件夹)中创建的。

git在所有版本/分支/提交等根目录中创建一个.git文件夹

链接地址: http://www.djcxy.com/p/18873.html

上一篇: Where should git repositories be created?

下一篇: git pull while not in a git directory