使用版本历史记录导出git

cod*_*mer 23 git

我需要导出一个git存储库内容并将其导入目标存储库.我知道有两种方法可以做到,但它们并没有解决我的问题

a)将源存储库添加为远程存储库并对目标进行合并.我不能使用它,因为两个存储库不在同一个网络上

b)使用git archive并将内容复制到目标.在这个git存档中,修订信息会丢失.

我需要一些存档和版本历史记录,并使我能够合并到目标中.如何才能做到这一点?

ant*_*tak 49

git bundle 是为了这个目的而提供的.

例:

  1. 整个捆绑您的源存储库

    git bundle create my_repo.bundle --all

  2. 把``my_repo.bundle''带到目标所在的位置

  3. 从目标中,加载源提交对象

    git bundle unbundle my_repo.bundle

    ...从那时起,您可以将您想要的源提交合并/转换/樱桃选择到您的目标存储库中,以获取您的内容.

    否则,拉动工作原理相同:

    git pull my_repo.bundle

与克隆相比,捆绑更容易传输,因为它们较小,因为您的文件未在其签出状态下携带.

使用bundle的其他原因:

  • 与使用clone --bare(不检出文件)不同,捆绑包是作为单个文件创建和打包的,因此您不需要额外的压缩/压缩包.

  • 你也可以简单地tar你的源存储库(或只是.git目录),但你将承载在.git /下构建的所有多余的缓存和垃圾.

  • 你也可以`git clone my_repo.bundle`.有关更多信息,请访问http://git-scm.com/docs/git-bundle (11认同)
  • 在解包之前,你需要有一个现有的目标存储库,或者通过发出 git init 命令创建一个新的存储库,否则你会得到一个错误。 (2认同)