我需要将完整的存储库传输到一台新的非联网机器上,最好是作为单个文件实体。git捆绑包允许在sneakernet环境中进行git fetch
、git pull
风格的操作,但似乎假定您在目标计算机上已经有了存储库的工作版本。
什么是正确的调用:
我已经向上游发送了一个补丁来澄清:
`git clone` can use any bundle created without negative refspecs
(e.g., `new`, but not `old..new`).
If you want to match `git clone --mirror`, which would clone other
refs such as `refs/remotes/*`, use `--all`.
If you want to provide the same set of refs that a clone directly
from the source repository would get, use `--branches --tags` for
the `<git-rev-list-args>`.
所以$ git bundle create repo.bundle --branches --tags
最适合克隆。
$ git bundle create repo.bundle --all
将提供源机器的镜像,包括它的远程refs。
发布于 2012-08-03 20:14:49
什么是正确的调用:
中的所有分支
简单:
$ git bundle create repo.bundle --all
这里的repo.bundle
是您想要创建的包文件的名称。请注意,--all
将不包括远程跟踪分支...就像普通的克隆人一样。
的根提交
首先,clone
仅仅是init
+ fetch
(+ administrativia)。
其次,您可以在任何可以使用存储库URL的地方使用捆绑包文件,因此您可以简单地从捆绑包文件执行clone
:
$ git clone repo.bundle
这将创建repo
作为git存储库。
发布于 2015-12-08 22:21:50
首先克隆存储库,并包含--mirror
选项。
git clone --mirror git@example.org:path/repo.git
这可以确保所有远程分支也都是本地分支,为构建做好准备。
然后运行
根据Jakub Narębski的回答所描述的git bundle create repo.bundle --all
发布于 2012-08-03 17:16:47
我建议您压缩或压缩.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
https://stackoverflow.com/questions/11792671
复制相似问题