标签: shallow-clone

git shallow clone(clone --depth)错过了远程分支

克隆远程存储库后,它不会通过-a选项显示任何远程分支.可能是什么问题呢?怎么调试呢?在此片段中,未显示两个远程分支:

$ git clone --depth 1 git://git.savannah.gnu.org/pythonwebkit.git
$ cd pythonwebkit
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
$ git --version
git version 1.8.3.1
Run Code Online (Sandbox Code Playgroud)

在另一台机器上尝试相同的命令,它运作良好:

$ git clone --depth 1 git://git.savannah.gnu.org/pythonwebkit.git
Receiving objects: 100% (186886/186886), 818.91 MiB | 3.44 MiB/s, done.
$ cd pythonwebkit/
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/debian
  remotes/origin/master
  remotes/origin/python_codegen
$ git --version
git version 1.7.1
Run Code Online (Sandbox Code Playgroud)

尝试克隆另一个回购,它运作良好.虽然我可以在这台机器上再试一次,但最好知道什么是错的.

任何建议或提示都将受到欢迎.

编辑:答案摘要:从git版本1.8.3.2开始,需要同时使用"--depth"和"--no-single-branch"来获得与以前相同的行为.这被视为错误修复.

git branch shallow-clone

76
推荐指数
3
解决办法
4万
查看次数

如何在特定分支上浅层克隆回购?

如何浅登克隆git存储库,以便我的克隆只包含1个历史记录项,并在特定分支上启动?

我知道如何做一个浅层克隆:

git clone --depth 1 https://path/to/myrepo.git
Run Code Online (Sandbox Code Playgroud)

但不能在特定分支上启动克隆.

git continuous-integration git-clone shallow-clone git-branch

63
推荐指数
1
解决办法
2万
查看次数

57
推荐指数
2
解决办法
1万
查看次数

如何浅深度克隆深度为1的特定提交?

是否可以在存储库中浅层克隆特定提交,即深度为1?就像是

git clone http://myrepo.git 728a4d --depth 1
Run Code Online (Sandbox Code Playgroud)

获取存储库状态,因为它是在SHA提交时728a4d...

我们的动机是避免必须克隆整个存储库,然后检查特定的提交,当我们只对该特定提交的存储库状态感兴趣时.

git shallow-clone

55
推荐指数
4
解决办法
2万
查看次数

如何从浅层克隆中有效地获取git

我们使用git来分发操作系统并使其保持最新状态.我们无法分发完整的存储库,因为它太大(> 2GB),所以我们一直在使用浅克隆(~300M).然而,最近从浅层克隆中获取时,它现在无法有效地获取整个> 2GB存储库.这对于部署而言是无法浪费的带宽浪费.

git文档说你无法从浅存储库中获取,尽管这绝对不是真的.是否有任何变通方法git clone --depth 1可以获取它的变化?或者其他一些策略是保持分布大小尽可能小,同时让git需要进行更新所有位?

我没有成功尝试克隆--depth 20,看它是否会更有效地升级,这是行不通的.我也看了http://git-scm.com/docs/git-bundle,但这似乎创造了巨大的捆绑.

git github shallow-clone

46
推荐指数
4
解决办法
3万
查看次数

在浅克隆之后推送到github

由于大量的提交,我有一个庞大的git repo,所以根据这里的建议我创建了一个浅层克隆.我已经对这个新的本地仓库进行了更改,现在我想在Github上推动我的起源(然后再到我在Heroku上的升级和生产遥控器).也许有一天我会学习阅读文档:

git clone --depth命令选项说

--depth创建一个浅层克隆,其历史记录被截断为指定的修订数.浅存储库有许多限制(您不能克隆或获取它,也不能从中推送或插入它)

那么......我如何从这种情况中解脱出来并将我的代码推送到Github?

git github heroku shallow-clone

18
推荐指数
5
解决办法
1万
查看次数

如何获取足够的提交以在浅层克隆中进行合并

我正在尝试做什么:测试来自github的pull请求.我想在本地将pull请求合并到master中并对结果运行一些测试.由于存储库很大,我做了一个浅层克隆.

为了能够进行合并,我获取越来越多的提交(git fetch增加--depth),直到我merge-commit掌握了拉取请求.

但是,它每次都不起作用.看起来我不仅需要合并库,还需要master..merge_base范围内的每个提交.但我不确定该怎么做.

所以,问题是:如何获取足够的历史记录来进行合并?

git merge shallow-clone

16
推荐指数
3
解决办法
1189
查看次数

我可以只克隆存储库的最新变更集而不是整个历史记录吗?

我必须使用拥有数百万行代码和数十万个更改集的hg存储库.你可以想象,这真的会减慢mercurial和TortoiseHg的速度.

我可以创建一个只有最新的几千个变更集的本地存储库吗?

这不仅有希望让事情变得更加快捷,而且还可能为我节省一些硬盘空间.

mercurial shallow-clone

13
推荐指数
3
解决办法
3598
查看次数

在git中使用子模块的浅克隆,如何使用尖头提交而不是最新的?

我知道使用--depth选项可以使用浅子模块git submodule update.

但是,如果我跑

git submodule update --init --recursive --depth 1
Run Code Online (Sandbox Code Playgroud)

在我的项目中有几个子模块,我得到了一个fatal: reference is not a tree.所以我再次尝试过

git submodule update --init --recursive --depth 100
Run Code Online (Sandbox Code Playgroud)

哪个工作正常,但我想保持深度为1.

在我看来,--depth 1拉出子模块中的最新提交,而不是主存储库指向的提交,这就是为什么将其设置为100解决了问题,因为它提取了更长的提交列表,包括指向的提交.

不幸的是,如果是这种情况,那么我通常不能确定最新的100次提交包括我需要的提交.

我如何告诉git使用尖头提交而不是使用子模块的浅层克隆中的最新提交?

我在Windows上使用git 1.9.4.

git git-submodules shallow-clone

12
推荐指数
1
解决办法
2803
查看次数

对Travis和其他CI服务进行浅层克隆的缺点是什么?

大多数CI服务提供了一种浅层克隆存储库的方法.例如,在特拉维斯:

git:
  depth: 1
Run Code Online (Sandbox Code Playgroud)

或者在AppVeyor上:

clone_depth: 1
or
shallow_clone: true
Run Code Online (Sandbox Code Playgroud)

这有明显的速度优势,因为您不必克隆整个存储库.

CI服务的浅层克隆是否有任何缺点?是否存在浅层克隆会导致CI构建失败的情况?否则,为什么不浅层克隆这些CI服务的默认设置?

git continuous-integration travis-ci shallow-clone appveyor

12
推荐指数
3
解决办法
2046
查看次数