今天早上我对Linux源代码进行了浅层克隆
git clone --depth 1 https://github.com/torvalds/linux.git
Run Code Online (Sandbox Code Playgroud)
这导致了一个linux851Mb 的文件夹.
现在我想拉出最新的变化,但是
git pull
Run Code Online (Sandbox Code Playgroud)
开始一个似乎巨大的下载.在60Mb之后,我是3%,推断为2Gb.但是,自我克隆以来的5次提交只改变了一堆行.
难道我做错了什么?git试图下载的2Gb是什么?
mga*_*aia 47
我想你可以使用--depth 1在git pull了,所以它得到所需的真实正是在最新提交的存储库.
我不知道默认行为是否会丢失所有内容,因为我git help pull显示了这个选项:
git pull --unshallow
Run Code Online (Sandbox Code Playgroud)
要么
git fetch --unshallow
Run Code Online (Sandbox Code Playgroud)
--unshallow将浅存储库转换为完整存储库,删除浅存储库强加的所有限制.
我正在运行git version 1.8.5.2 (Apple Git-48),也许这是一些新的行为,并且在版本之间有所改变.
任何新提交都可以是merge-commit,指向树中不存在的提交吗?也许--depth 1000会更好,但仍然足够小.
小智 5
文件中提交的深度.git/shallow。检索提交历史记录时,您的请求将停止在浅文件中的提交处,但如果合并到当前分支,它将遵循该分支及其背后的整个历史记录。
从我的博客文章探索 Git Clone --深度:
\n如果您有一个分支结构,git clone --depth=1当 main 位于 时,您执行了以下操作c:
... - . - . - [c] - . - . - . - . (main)\n \\ /\n . - . - . (xyz)\nRun Code Online (Sandbox Code Playgroud)\n然后稍后在 处进行提取g,在 d 处合并将导致您提取几乎整个历史记录(除了b)。
1000\xe2\x80\x99s of commits - a - . - [c] - d - e - f - g (main)\n \\ /\n x - y - z (xyz)\nRun Code Online (Sandbox Code Playgroud)\n我的博文对此给出了两条建议:
\ngit fetch --depth 1 origin main\ngit reset --hard origin/main\nRun Code Online (Sandbox Code Playgroud)\ngit clone --shallow-since=2022-06-01 repo\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
15580 次 |
| 最近记录: |