克隆存储库而不使其成为远程源

And*_*imm 27 git git-clone

我正在从将要擦除的计算机克隆一个git存储库.

是否可以在不创建原始存储库的情况下克隆存储库origin/master?或者我是否需要克隆它,然后删除远程分支(已完成git remote rm origin)?

编辑:存储库只有一个分支,没有标记.

Jes*_*ers 24

没有必要使原始存储库成为克隆主分支的"origin"远程.

在新计算机上,创建一个新存储库:

git init foo
Run Code Online (Sandbox Code Playgroud)

然后将旧存储库拉入新存储库,而不创建远程存储库:

cd foo
git pull <reference to old repository>
Run Code Online (Sandbox Code Playgroud)

但是,应该注意的是,保存存储库的最简单方法是将存储库的目录压缩并将文件移动到新计算机.这将保留任何和所有遥控器,标签等.

如下所述,在复制存储库时,从区分大小写的文件系统(例如Linux,Mac,NTFS)到非区分大小写(例如Fat32)时要小心.


Jak*_*ski 7

首先,您可以使用--origin <name>选项git clone

--origin <name>, - o <name>

不使用远程名称来跟踪上游存储库,而是使用<name>.

其次,你可以使用git remote add添加库从现有的资料库获取(这样你就可以使用git init,然后git remote add <name> <url>).


如果你想创建一个存储库的镜像,refs/heads/*进入refs/heads/*克隆,你可以init存储,设置适当的refspec,然后fetch......

或者你可以使用git clone --mirror,它应该回答当前版本的OP问题.

然而,这将不会保留配置(包括遥控器),工作树状态,reflogs等.为此,您需要整理存储库,正如Jess Bowers所说.

  • 使用`--origin`的问题是***你必须指定一个原点远程***,对吗?我正在尝试找到一种克隆(或有效克隆)的简单方法,以便克隆没有配置任何远程别名.当然你总是可以做`git remote rm origin`,但我希望能找到一些可以一步完成的东西. (2认同)
  • @Cupcake:不幸的是(据我所知)没有一步到位的解决方案.您可以克隆(1)然后删除"origin"远程信息(2),或初始化存储库(1)并使用URL而不是远程名称(2)获取所有分支和标记. (2认同)