git init和有什么区别git init --bare?我发现很多博客文章都需要--bare他们的 Git 服务器?
git init
git init --bare
--bare
从手册页,它说:
--bare 创建一个裸存储库。如果没有设置 GIT_DIR 环境,则设置为当前工作目录
创建一个裸存储库。如果没有设置 GIT_DIR 环境,则设置为当前工作目录
但它实际上是什么意思?--bareGit服务器设置是否需要?
此变体创建一个带有工作目录的存储库,因此您可以实际工作 ( git clone)。创建它后,您将看到该目录包含一个.git文件夹,其中包含历史记录和所有 git 管道。.git您在文件夹所在的级别工作。
git clone
.git
另一种变体创建一个没有工作目录的存储库 ( git clone --bare)。您没有可以工作的目录。目录中的所有内容现在都是.git上述案例中文件夹中包含的内容。
git clone --bare
对没有工作目录的 git repos 的需求是您可以将分支推送到它并且它不管理某人正在处理的内容。您仍然可以推送到非裸存储库,但您将被拒绝,因为您可能会移动某人在该工作目录中正在处理的分支。
所以在一个没有工作文件夹的项目中,你只能看到 git 存储的对象。它们被压缩和序列化并存储在其内容的 SHA1(哈希)下。为了在裸存储库中获取对象,您需要git show然后指定要查看的对象的 sha1。您不会看到与您的项目类似的结构。
git show
裸存储库通常是每个人将工作转移到的中央存储库。无需操纵实际工作。这是一种在多人之间同步工作的方法。您将无法直接查看您的项目文件。
如果您是该项目的唯一工作人员,或者您不想要/不需要“逻辑上的中央”存储库,则您可能不需要任何裸存储库。git pull 在这种情况下, 人们会更喜欢其他存储库。这避免了 git 在推送到非裸存储库时的反对意见。
git pull
希望这可以帮助