有没有一种方法可以让git pullkeepdepth=1只使用最新的提交,而不是 git clone 所做的提交(如果有更新的提交)?
我做git clone -b some_branch --depth=1 git_repo.git
它以最小的空间使用量克隆存储库,因为它删除了所有历史记录。现在,如果我需要再次更新该存储库并使用git pull,它会提取整个历史记录。
这里有一个类似的问题:
如果尝试接受答案建议并使用git pull --unshallowthen git pull --depth=1,看起来它不会像git clone --depth=1以前那样减少空间。
因此,真正减少存储库大小的唯一方法就是删除存储库并depth=1再次克隆?看起来有点笨拙的方法。
我需要这个的原因是,完全克隆时使用了一些存储库,目前的~3 GB大小大约是这样。使用它的环境大约有 40 个。所以总的来说,它使用了大量的空间。如果是浅克隆,可以减少5倍左右。
样本:
克隆此存储库分支 12.0 git@github.com:odoo/odoo.git,显示其大小约为 3 GB。
使用 克隆此存储库分支 12.0 depth=1,显示大小为 643 MB。
使用--unshallowon pull 然后(按照此处的建议将 git 存储库转换为浅层?):
git pull --depth 1
git gc --prune=all
Run Code Online (Sandbox Code Playgroud)
似乎没有像浅克隆那样缩小大小。
小智 2
不幸的是,答案是“不”。文件中提交的深度.git/shallow。检索提交历史记录时,您的请求将停止在浅文件中的提交处,但如果合并到当前分支,它将遵循该分支及其背后的整个历史记录。来自我的博客文章,探索 Git Clone --deep:
如果您有一个分支结构,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上面的中等博客文章提供了一些建议,但没有回答您的问题。
\n| 归档时间: |
|
| 查看次数: |
2810 次 |
| 最近记录: |