35

我需要导出一个 git 存储库内容并将其导入目标存储库。我知道有两种选择,但它们不能解决我的问题

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

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

我需要一些可以与版本历史记录一起存档的东西,并使我能够合并到目标中。如何才能做到这一点?

4

4 回答 4

69

git bundle正是为此目的而提供的。

例子:

  1. 完整地捆绑您的源存储库

    git bundle create my_repo.bundle --all

  2. 将“my_repo.bundle”带到您的目标位置

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

    git bundle unbundle my_repo.bundle

    ...从那时起,您可以将所需的源提交合并/rebase/cherry-pick 到您的目标存储库中,以满足您的心愿。

    否则,拉动的效果是一样的:

    git pull my_repo.bundle

与克隆相比,捆绑包更容易传输,因为它们更小,因为您的文件不是处于签出状态。

使用捆绑包的其他原因:

  • 与使用clone --bare(不签出您的文件)不同,捆绑包被创建并打包为单个文件,因此您不需要额外的压缩/压缩包。

  • 您也可以简单地对您的源存储库(或只是 .git 目录)进行 tar 压缩,但您将携带在 .git/ 下建立的所有多余缓存和垃圾。

于 2012-08-10T06:35:30.393 回答
2

Git 将存储库克隆到 U 盘、笔记本电脑或其他一些数据传输介质上。将其连接到另一台机器,将媒体添加为远程并从那里拉/合并更改......

存储库中的任何克隆实际上都包含所有历史记录,因此问题实际上是如何将克隆克隆到另一台机器上。

另见:这个问题

于 2012-08-09T09:57:44.687 回答
0

您想为当前存储库创建一个分支。如果我做对了,请告诉我:您希望克隆特定的 git 存储库。处理克隆然后将更改合并到原始存储库中?

这是我创建存储库的一个分支,然后从原始源中提取更改以进行提交更改。

于 2012-08-09T08:20:34.710 回答
0

您只需压缩完整的存储库文件夹,然后将其复制到目标工作站(通过 USB 棒等),然后将该本地存储库添加为远程存储库。然后你可以获取和合并。

于 2012-08-09T09:43:54.050 回答