克隆空的* bare * git存储库最简单的方法是什么?

时间:2009-05-21 23:42:28

标签: git clone git-bare

我刚刚完成了Google搜索结果的巡航,其中包含所有关于git无法克隆空存储库的愚蠢行为的电子邮件。某种灵魂甚至提交了补丁。在git升级之前,克隆空的 git存储库的最简单,最直接的方法是什么?

理想的解决方案将支持-o选项,为远程仓库提供origin以外的名称,并且它可以作为简单的shell脚本实现,例如git-clone-empty-repo。< / p>

(为什么我要这样做:我在我们的NetApp文件管理器上设置了一个空的,空的git repo,它将被备份,但我想在我的本地硬盘驱动器上使用克隆并推拉来回与我合作的其他人也会这样做。我创建了很多新的git repos,我无法克隆一个空的回购让我疯狂。)


编辑:VonC的帖子暗示

$ git-init
$ git-remote add origin server:/pub/git/test.git

相当于当repo为空时克隆远程仓库。这不是我想要的,因为我总是使用git clone的-o选项;我根据它所使用的机器或其他一些令人难忘的标准命名远程仓库。 (如果他们都被称为origin,我有太多的回购来保持他们的直线。)


编辑:以下答案将被标记为接受: - )

路径

克隆空的裸仓库
  1. 保留~/git/onefile一个包含一个无害文件的非裸git repo,例如.gitignore。 (或者,动态创建这样的仓库。)
  2. (cd ~/git/onefile; git push 路径 master)
  3. git clone -o 名称 路径
  4. 换句话说,不要尝试克隆空仓库,而是在创建它之后,向它推送一个包含一个无害文件的简单仓库。然后它不再是空的,可以克隆。

    如果有人没有打败我,我会发布一个shell脚本。

1 个答案:

答案 0 :(得分:13)

可能只是有一个git repo,其中包含最小文件数:

一个:.gitignore,其中有明显的忽略模式。

然后克隆那个“几乎空”的存储库 请注意,这样一个“几乎为空”的存储库(“几乎”因为它仍然在.git目录旁边有一个最小的工作目录)然后可以通过“git clone --bare”(作为illustrated here),使其成为真实裸露的回购(但不是“空”) 这就是你可以使用的简单回购:

  • 克隆你想要的任何地方。
  • 或(更重要的是)推送(因为它是一个裸露的回购)

您在this thread中有一个关于“其他方式”的完美摘要(我在此留作参考)。

$ git-init
$ git-remote add origin server:/pub/git/test.git
  

对于一个新项目(还没有代码)我想做一个空的,裸露的   远程公共服务器上的存储库(无工作副本)作为起始
  点,在本地克隆它,并逐渐在本地创建内容和
  将它推送到远程公共服务器。

Junio C Hamano回应:

  

你准备了一个空的裸存储库用于发布   非常好。

     

下一步是您在其他地方准备您的内容。那   将是你的私人工作场所,即你想去的地方   通常工作)   你从私人工作场所推出   进入该出版库。
  你的工作地点在哪里   最初的提交应该来自,因为你就是那个   是谁开始这个项目。

     

请注意,私人工作场所不必是克隆   空的。这实际上是倒退。你的工作   从您的私人工作场所开始到出版工作。

     

您甚至可以克隆您的私人存储库以发布一个   明确谁是主人,谁是副本如果你   我想,但是因为你已经有了裸存储库   发布,只需要进入它就可以了。