如何捆绑一个完整的回购

我需要将一个完整的回购转移到一个新的非联网机器,最好是一个单独的文件实体。 git bundle允许在sneakernet环境中进行git fetchgit pull风格的操作,但是似乎假设你已经在目标机器上有一个工作版本的repo。

什么是正确的调用:

  1. 捆绑当前回购的所有分行
  2. 在目标目录启动新的回购,即得到正确安装的根提交

什么是正确的调用:

  • 捆绑当前回购的所有分行

简单:

 $ git bundle create repo.bundle --all 

这里repo.bundle是要创build的包文件的名称。 请注意, – 所有不会包括远程跟踪分支…就像普通的克隆不会。

  • 在目标目录启动新的回购,即得到正确安装的根提交

首先, clone只是init + fetch (+ administrativia)。

其次,你可以在任何可以使用版本库URL的地方使用bundle文件,所以你可以简单地从bundle文件中clone

 $ git clone repo.bundle 

这将创buildrepo作为一个混帐存储库。

首先克隆存储库,并包含--mirror选项。

git clone --mirror git@example.org:path/repo.git

这确保所有远程分支也是当地分支准备bundeling。

然后运行

git bundle create repo.bundle --all从JakubNarębski的答复描述

我build议你tar或压缩的.git文件夹,只需解压它在新的位置,然后做git reset --hard HEAD 。 所有分支所需的所有东西都在.git下,所有你需要做的就是调整.git / config文件中的任何遥控器,或者删除它们。

 tar cf myrepo.tgz .git cp myrepo.tgz [USB_STICK] ... move to new machine ... mkdir myrepo && cd myrepo tar xpf [USB_STICK]/myrepo.tgz git reset --hard HEAD