gpt4 book ai didi

git - 删除大小(磁盘空间)大于给定值的提交

转载 作者:太空狗 更新时间:2023-10-29 14:16:25 25 4
gpt4 key购买 nike

通读后:

How to remove a too large file in a commit when my branch is ahead of master by 5 commits

https://help.github.com/en/articles/working-with-large-files

https://rtyley.github.io/bfg-repo-cleaner/

https://help.github.com/en/articles/removing-sensitive-data-from-a-repository

Show commit size in git log

Git - get all commits and blobs they created

我找不到一个优雅的解决方案来删除超过给定大小(在磁盘上)的提交。这些提交不一定有大文件,但它们本身就很大(有很多~200 KB 的依赖项)。

如何从存储库中删除此类提交?

最佳答案

首先注意:

git 在将文件存储在其 .git/ 结构中时压缩文件,并尝试仅使用它们的差异来存储相似的文件;

从这个意义上说,很难发现“在我的 .git/ 文件夹中什么提交占用了最多的空间”。


如果您想测量 check out 时提交中的文件占用了多少空间:

git ls-tree -r -l <commitid>

将列出文件及其各自的大小

git ls-tree -r -l <commitid> | awk '{ sum += $4 } END { print sum }'

将打印这些文件的总大小。


你可以将上面的快捷方式放在脚本中,看看哪些提交占用了超过 xx 字节,接下来的事情是:你能摆脱所说的提交吗?

你可以告诉 git 删除一个分支的末尾:

If all 'B's mark 'big commits' :

+-- create a new branch here
v
*--*--*--*--*--*--B--B--B--B <- branchA
\ \
\ \-B--B <- branchB
\
*--*--*--* <- branchC
\
\--B <- branchD

在上图中,您可以告诉 git 忘记 branchAbranchBbranchD(并可能创建一个新的引用来保留第一个“没有那么大”的提交),

但是当一个提交出现在一个分支的中间时:

*--*--B--B--*--* <- branchE

“删除两个 B”的概念在很大程度上取决于存储在 git 存储库中的内容以及如何从分支历史记录中删除这些提交。

一般建议是:不要删除提交。

关于git - 删除大小(磁盘空间)大于给定值的提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56289184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com