我试图寻找一个关于减少回购规模的好教程,但没有找到.我如何减少我的repo大小...它大约10 MB,但事情是Heroku只允许50 MB,我不在附近完成开发我的应用程序.
我已经将通常的嫌疑人(日志,供应商,文档等)添加到.gitignore.虽然我最近只添加了.gitignore.
有什么建议?
我正在寻找减少git存储库大小的方法.搜索引导我到git gc --aggressive大多数时间.我还读到这不是首选方法.
为什么?如果我跑步,我应该注意什么gc --aggressive?
git repack -a -d --depth=250 --window=250推荐结束gc --aggressive.为什么?如何repack减少存储库的大小?此外,我不太清楚旗帜--depth和--window.
我应该怎么选择gc和repack?什么时候应该使用gc和repack?
我正在开发一个git课程,并且想提一下,在跑步之前,丢失的裁判并没有真正丢失git gc.但验证这一点,我发现事实并非如此.即使在运行git gc --prune=all --aggressive丢失的裁判后仍然存在.
显然我误解了一些东西.在说出不正确的课程之前,我想直截了当地说明事实!这是一个示例脚本说明了效果:
#!/bin/bash
git init
# add 10 dummy commits
for i in {1..10}; do
date > foo.txt
git add foo.txt
git commit -m "bump" foo.txt
sleep 1
done;
CURRENT=$(git rev-parse HEAD)
echo HEAD before reset: ${CURRENT}
# rewind
git reset --hard HEAD~5
# add another 10 commits
for i in {1..10}; do
date > foo.txt
git add foo.txt
git commit -m "bump" foo.txt
sleep 1
done;
Run Code Online (Sandbox Code Playgroud)
这个脚本将添加10个虚拟提交,重置为过去的5个提交,并添加另外10个提交.在重置之前,它将打印它当前HEAD的哈希值.
我希望CURRENT在跑步后失去对象 …
假设我想编写一个小助手,它允许将一些元数据附加到存储库中,这种方式可以通过refs. 简单示例(一个git-notes克隆原型,甚至不将注释附加到任何其他 git 对象):
hash=$(echo "Just a comment" | git hash-object -w --stdin)
git update-ref refs/comments/just $hash
Run Code Online (Sandbox Code Playgroud)
即我blob用哈希创建一个hash并引用它,因为refs/comments/just这样git fsck --unreachable不会抱怨它,git gc也永远不会prune是对象。
但这当然是一个非常简单的例子,实际上我对更复杂的功能感兴趣。在那里,我的问题是,我可以“合法”做什么,我绝对应该避免什么?
例如,SE 上的一些帖子是关于用户必须从重复tree条目中恢复的。因此,“不要”就是“不要创建tree具有重复条目的条目”。另一个例子是“你确保你的对象是可到达的,所以git prune不会删除它们。” 还有什么?
我可以创建自定义对象类型吗?对树中的 blob 使用“无效”文件模式?在哪里可以找到概览?或者我应该git-fsck手动检查's source 以查看什么构成错误(哪些是可以忽略的)?
有什么区别git gc和git repack -ad; git prune?
如果是,将采取哪些额外步骤git gc(反之亦然)?
哪个更适合空间优化或安全?
git tag 文档说你可以标记提交或对象:
<commit>
<object>
新标记将引用的对象,通常是提交。默认为 HEAD。
事实上,您可以获取 blob 对象的哈希值并对其进行标记。但我不明白——它有什么用?你可以用这个标签做什么?
我有一些svg文件希望通过git. 但是,大多数软件都可以透明处理svgz(基本上是svg.gz)。因此,我正在考虑切换到svgz以节省磁盘空间。
将它们作为svgz而不是svg从一个git角度来看有什么优点和缺点?
我天真的想法是git 差异算法针对文本文件进行了优化,并且在它们的压缩副本上效果不佳。由于差异也被压缩,我认为整体方法对于文本文件非常有效,其中差异占用的磁盘空间非常少。相反,对于压缩数据,它倾向于在内部保存更大的文件,最终我预计存储库最终可能会为压缩文件占用更多空间。
我git gc --auto作为自动保存脚本的一部分运行。如果git gc --auto做了什么,我想进一步清理,但如果git gc --auto觉得不需要做些什么,我想省去麻烦。有没有办法检查 的返回值git gc --auto,或者事先检查是否有必要运行它?