20

我刚刚浏览完谷歌搜索结果,其中包含所有关于 git 无法克隆空存储库是多么愚蠢的电子邮件咆哮。某个善良的灵魂甚至提交了补丁。在 git 升级之前,克隆一个空的裸git 存储库的最简单、最直接的方法是什么?

理想的解决方案将支持为-o远程 repo 指定除 之外的名称的选项origin,并且可以作为简单的 shell 脚本实现,例如git-clone-empty-repo.

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


编辑:VonC 的线程表明

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

相当于repo为空时克隆远程repo。这不是我想要的,因为我总是使用-ogit clone 的选项;我根据远程仓库所在的机器或其他一些令人难忘的标准来命名远程仓库。(如果它们都被调用的话,我有太多的存储库无法保持它们的正确性origin。)


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

要在path克隆一个空的、裸仓库,

  1. 保存在~/git/onefile包含一个无害文件的非裸 git 存储库中,例如.gitignore. (或者,动态创建这样的存储库。)
  2. (cd ~/git/onefile; git push 小路 master)
  3. git clone -o 名称 路径

换句话说,不要试图克隆空的 repo,而是在创建它之后,向它推送一个包含一个无害文件的简单 repo。然后它不再是空的,可以克隆了。

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

4

1 回答 1

15

可能只是有一个包含最少文件数的 git repo:

一:.gitignore有明显的忽略模式。

然后克隆那个“几乎是空的”存储库。
请注意,这样一个“几乎空”的存储库(“几乎”,因为它在 .git 目录旁边仍然有一个最小的工作目录)然后可以通过 ' git clone --bare' (如此处所示),使其成为真正的裸仓库(但不是“空的” “ 一)。
这就是你可以的裸仓库:

  • 克隆任何你想要的地方。
  • 或者(更重要的是)推送到(因为它是一个裸仓库)

你在这个线程中有一个很好的总结“其他方式”(我保留在这里供参考)。

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

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

Junio C Hamano 对此作出回应:

您为发布准备了一个空的裸存储库,这非常好。

下一步是您在别处准备内容。那将是您的私人工作场所,即您通常工作的地方)。
您从您的私人工作场所推送到该发布存储库。
您的工作地点是最初提交的来源,因为您是启动项目的人。

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

您甚至可以克隆您的私有存储库以发布一个,以明确谁是主存储库,谁是副本,如果您愿意的话,但是因为您已经拥有用于发布的裸存储库,只需将其推入即可。

于 2009-05-21T23:45:05.007 回答