我需要导出一个 git 存储库内容并将其导入目标存储库。我知道有两种选择,但它们不能解决我的问题
a)将源存储库添加为远程并合并到目标。我不能使用它,因为两个存储库不在同一个网络上
b) 使用 git archive 并将内容复制到目标。在这个 git 存档中,修订信息丢失了。
我需要一些可以与版本历史记录一起存档的东西,并使我能够合并到目标中。如何才能做到这一点?
我需要导出一个 git 存储库内容并将其导入目标存储库。我知道有两种选择,但它们不能解决我的问题
a)将源存储库添加为远程并合并到目标。我不能使用它,因为两个存储库不在同一个网络上
b) 使用 git archive 并将内容复制到目标。在这个 git 存档中,修订信息丢失了。
我需要一些可以与版本历史记录一起存档的东西,并使我能够合并到目标中。如何才能做到这一点?
git bundle
正是为此目的而提供的。
例子:
完整地捆绑您的源存储库
git bundle create my_repo.bundle --all
将“my_repo.bundle”带到您的目标位置
从您的目标,加载您的源提交对象
git bundle unbundle my_repo.bundle
...从那时起,您可以将所需的源提交合并/rebase/cherry-pick 到您的目标存储库中,以满足您的心愿。
否则,拉动的效果是一样的:
git pull my_repo.bundle
与克隆相比,捆绑包更容易传输,因为它们更小,因为您的文件不是处于签出状态。
使用捆绑包的其他原因:
与使用clone --bare
(不签出您的文件)不同,捆绑包被创建并打包为单个文件,因此您不需要额外的压缩/压缩包。
您也可以简单地对您的源存储库(或只是 .git 目录)进行 tar 压缩,但您将携带在 .git/ 下建立的所有多余缓存和垃圾。
Git 将存储库克隆到 U 盘、笔记本电脑或其他一些数据传输介质上。将其连接到另一台机器,将媒体添加为远程并从那里拉/合并更改......
存储库中的任何克隆实际上都包含所有历史记录,因此问题实际上是如何将克隆克隆到另一台机器上。
另见:这个问题
您想为当前存储库创建一个分支。如果我做对了,请告诉我:您希望克隆特定的 git 存储库。处理克隆然后将更改合并到原始存储库中?
这是我创建存储库的一个分支,然后从原始源中提取更改以进行提交更改。
您只需压缩完整的存储库文件夹,然后将其复制到目标工作站(通过 USB 棒等),然后将该本地存储库添加为远程存储库。然后你可以获取和合并。