Pro Git book指出我需要先在现有目录中创建repo,然后将其克隆为“bare”。我已经阅读了这篇关于为什么使用“裸”存储库的文章,似乎我需要将其视为“起源”,它应该用于拉取和推送。我不明白为什么我需要先创建常规存储库然后将其克隆为“裸”?为什么我不能先创建“裸”存储库,然后从那里的目录提交文件?
如果我删除创建“裸”仓库的目录怎么办?它会以某种方式影响“裸”存储库吗?
Pro Git book指出我需要先在现有目录中创建repo,然后将其克隆为“bare”。我已经阅读了这篇关于为什么使用“裸”存储库的文章,似乎我需要将其视为“起源”,它应该用于拉取和推送。我不明白为什么我需要先创建常规存储库然后将其克隆为“裸”?为什么我不能先创建“裸”存储库,然后从那里的目录提交文件?
如果我删除创建“裸”仓库的目录怎么办?它会以某种方式影响“裸”存储库吗?
您可以轻松地创建一个裸存储库:
$ git init --bare <directory>
如果你克隆了它,你可以在克隆后删除原始存储库。克隆存储库中的origin
远程将无法访问,因此您可能希望之后将其删除。
并不是说遥控器在裸存储库中非常有用......
这可能是对起始情况的轻微误解。
你可以像任何其他的一样创建一个裸仓库,使用git init --bare
. 这将创建没有任何内容的存储库。
但是,如果没有一个可以与之通信的克隆,您就无法将文件放入其中,因为裸存储库没有工作目录。
如果您想将现有文件放入裸仓库,您有两种方法:
省略在变体 1. 中为原始非裸设备添加遥控器,您可以看到变体 2. 有更多步骤。
为什么我不能先创建“裸”存储库,然后从那里的目录提交文件?
因为您不能将文件提交到裸仓库中。
通常,如果您创建存储库(使用git init
or git clone
),git 将创建存储库结构(.git 子目录)和工作树,即检出当前提交文件的目录。
裸仓库只是一个没有相关工作树的仓库。因此无法将文件提交到其中,因为没有工作树可以将文件放入以进行提交。