小编典典

“git init”和“git init --bare”有什么区别?

all

git init和有什么区别git init --bare?我发现很多博客文章都需要--bare他们的 Git 服务器?

手册页,它说:

--bare

创建一个裸存储库。如果没有设置 GIT_DIR 环境,则设置为当前工作目录

但它实际上是什么意思?--bareGit服务器设置是否需要?


阅读 129

收藏
2022-08-02

共1个答案

小编典典

非裸 Git 仓库

此变体创建一个带有工作目录的存储库,因此您可以实际工作 ( git clone)。创建它后,您将看到该目录包含一个.git文件夹,其中包含历史记录和所有 git 管道。.git您在文件夹所在的级别工作。

裸 Git 仓库

另一种变体创建一个没有工作目录的存储库 ( git clone --bare)。您没有可以工作的目录。目录中的所有内容现在都是.git上述案例中文件夹中包含的内容。

为什么你会使用一个与另一个

对没有工作目录的 git repos
的需求是您可以将分支推送到它并且它不管理某人正在处理的内容。您仍然可以推送到非裸存储库,但您将被拒绝,因为您可能会移动某人在该工作目录中正在处理的分支。

所以在一个没有工作文件夹的项目中,你只能看到 git 存储的对象。它们被压缩和序列化并存储在其内容的
SHA1(哈希)下。为了在裸存储库中获取对象,您需要git show然后指定要查看的对象的 sha1。您不会看到与您的项目类似的结构。

裸存储库通常是每个人将工作转移到的中央存储库。无需操纵实际工作。这是一种在多人之间同步工作的方法。您将无法直接查看您的项目文件。

如果您是该项目的唯一工作人员,或者您不想要/不需要“逻辑上的中央”存储库,则您可能不需要任何裸存储库。git pull 在这种情况下,
人们会更喜欢其他存储库。这避免了 git 在推送到非裸存储库时的反对意见。

希望这可以帮助

2022-08-02