今天 早上 我 做 了 一 个 Linux 源 代码 的 浅层 克隆
git clone --depth 1 https://github.com/torvalds/linux.git
中 的 每 一 个
这 将 产生 一 个 大小 为 851Mb 的 linux
文件 夹 。
现在 我 想 调出 最 新 的 更改 , 但是
git pull
格式
开始 一 个 看似 巨大 的 下载 。 在 60Mb 之后 , 我 在 3% , 这 推断 为 2Gb 。 然而 , 5 提交 , 因为 我 的 克隆 只 改变 了 一 堆 行 。
我 做 错 了 什么 吗 ? git
尝试 下载 的 2GB 是 什么 ?
4条答案
按热度按时间4xy9mtcn1#
我认为你也可以在
git pull
中使用--depth 1
,这样它就可以得到仓库中最新提交所需要的东西。我不知道默认行为是否是提取所有缺失的内容,因为我的
git help pull
显示了以下选项:或
--unshallow将一个浅层仓库转换为一个完整的仓库,移除浅层仓库所施加的所有限制。
我正在运行
git version 1.8.5.2 (Apple Git-48)
,这可能是某种新的行为,在不同版本之间有一些变化。wvyml7n52#
有没有可能是合并提交,指向的提交不在树中?也许
--depth 1000
会更好地工作,并且仍然足够小。nfs0ujit3#
Depth将提交放置在
.git/shallow
文件中。当检索提交历史记录时,您的请求将在浅文件中的提交处停止,但如果有合并到当前分支中,它将跟随该分支以及其后的整个历史记录。从我的博客文章Exploring Git Clone --depth:
如果你有一个分支结构,当main在
c
时,你做了一个git clone --depth=1
:然后在
g
处进行提取,d处的合并将导致您拉取几乎整个历史(b
除外)。我的博客文章对此给出了两条建议:
1.以指定的深度提取并更新分支:
1.克隆足够的历史记录,您可能不会获得旁路:
ijxebb2r4#
Just use
or specify the depth you would like to download. That should be fine.