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

Nor*_*sey 17 git clone git-bare

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

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

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


编辑:VonC的线程表明

$ git-init
$ git-remote add origin server:/pub/git/test.git
Run Code Online (Sandbox Code Playgroud)

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


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

要在路径上克隆一个空的裸仓库,

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

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

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

Von*_*onC 14

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

一:.gitignore明显忽略模式.

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

  • 克隆到处想要的地方.
  • 或者(更重要的是)推送(因为它是一个简单的回购)

你在这个帖子中有一个很好的总结"其他方式"(我留在这里供参考).

$ git-init
$ git-remote add origin server:/pub/git/test.git
Run Code Online (Sandbox Code Playgroud)

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

Junio C Hamano回应:

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

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

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

你甚至可以克隆你的私人存储库来发布一个,以便明确谁是主人,谁是你想要的副本,但是因为你已经有了用于发布的裸存储库,所以只需要推送就可以了.