git - 通过 http(s) 克隆 git bundle

标签 git git-bundle

是否可以通过 http 克隆 git 包? 当我尝试这样做时,我得到了:

$ git clone http://127.0.0.1:8888/repo.bundle
Cloning into 'repo.bundle'...
fatal: repository 'http://127.0.0.1:8888/repo.bundle/' not found

这样做的原因是为了避免压缩服务器上的存储库(仅提供文件)并且我们仅限于 git clone 用户的应用程序

最佳答案

我知道没有办法按照你的要求去做。 bundle 的最初目的是补偿无法“在线”访问存储库(例如 HTTP 连接等)的情况;所以我怀疑是否有人会考虑这样的用例。

我了解到您想要的是准备您预计需要传输的存储库的一个子集,这样对该子集的请求就不会产生传输额外数据或将需要的与不需要的分开的成本。在这种情况下,您可能会考虑准备一个浅层克隆而不是一个包。请注意,要从浅克隆中获取的每个头的历史记录必须至少包含一个已经在执行获取的 repo 中的提交。例如,如果您有

x -- x -- ... huge history ... -- O -- x -- x <--(master)
                                   \
                                    A -- B -- C <--(some_branch)

如果您想通过C 以这种方式共享A,您会

git clone --depth=4 -b some_branch url/of/origin some_branch_repo

因为深度是 4,这将包括 OABC -- 意思是some_branch 的提取可以通过 C 接收 A

关于git - 通过 http(s) 克隆 git bundle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46609316/

相关文章:

windows - Jenkins 无法在 Windows 上通过 Git/SSH 克隆 Git 存储库

Git 存储库在 Azure 数据工厂中不起作用

git - 在 "remote"本地分支上重新设置 master 是如何工作的?

git 与 git-svn 捆绑

git - 请参阅 github 中的 "real"提交日期/时间(小时/天)

git - 如何归档使用 LFS 的 git 存储库?

带有 LFS 的 Git bundle

Git pull bundle 文件给出 'fatal: Couldn' t find remote ref HEAD'

git - “git pull”在 merge 冲突期间将其他人的提交带到我的暂存区