相关疑难解决方法(0)

减少git存储库大小

我试图寻找一个关于减少回购规模的好教程,但没有找到.我如何减少我的repo大小...它大约10 MB,但事情是Heroku只允许50 MB,我不在附近完成开发我的应用程序.

我已经将通常的嫌疑人(日志,供应商,文档等)添加到.gitignore.虽然我最近只添加了.gitignore.

有什么建议?

git git-clean

267
推荐指数
3
解决办法
12万
查看次数

git gc --aggressive vs git repack

我正在寻找减少git存储库大小的方法.搜索引导我到git gc --aggressive大多数时间.我还读到这不是首选方法.

为什么?如果我跑步,我应该注意什么gc --aggressive

git repack -a -d --depth=250 --window=250推荐结束gc --aggressive.为什么?如何repack减少存储库的大小?此外,我不太清楚旗帜--depth--window.

我应该怎么选择gcrepack?什么时候应该使用gcrepack

git version-control github

78
推荐指数
5
解决办法
3万
查看次数

什么时候git修剪对象:为什么"git gc"没有删除提交?

我正在开发一个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在跑步后失去对象 …

git git-gc

12
推荐指数
1
解决办法
2777
查看次数

自定义对象和参考的注意事项是什么?

假设我想编写一个助手,它允许将一些元数据附加到存储库中,这种方式可以通过refs. 简单示例(一个克隆原型,甚至不将注释附加到任何其他 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 git-gc git-fsck git-refspec git-hash

9
推荐指数
1
解决办法
474
查看次数

`git gc`和`git repack -ad之间有什么区别吗?git prune`?

有什么区别git gcgit repack -ad; git prune
如果是,将采取哪些额外步骤git gc(反之亦然)?
哪个更适合空间优化或安全?

git git-gc

4
推荐指数
1
解决办法
1419
查看次数

什么是在 Git 中标记不是提交的对象?

git tag 文档说你可以标记提交或对象:

<commit>
<object>
新标记将引用的对象,通常是提交。默认为 HEAD。

事实上,您可以获取 blob 对象的哈希值并对其进行标记。但我不明白——它有什么用?你可以用这个标签做什么?

git

4
推荐指数
1
解决办法
295
查看次数

git 如何处理压缩文件?

我有一些svg文件希望通过git. 但是,大多数软件都可以透明处理svgz(基本上是svg.gz)。因此,我正在考虑切换到svgz以节省磁盘空间。

将它们作为svgz而不是svg从一个git角度来看有什么优点和缺点?

我天真的想法是git 差异算法针对文本文件进行了优化,并且在它们的压缩副本上效果不佳。由于差异也被压缩,我认为整体方法对于文本文件非常有效,其中差异占用的磁盘空间非常少。相反,对于压缩数据,它倾向于在内部保存更大的文件,最终我预计存储库最终可能会为压缩文件占用更多空间。

git compressed-files

3
推荐指数
1
解决办法
787
查看次数

我怎么知道 `git gc --auto` 是否做了什么?

git gc --auto作为自动保存脚本的一部分运行。如果git gc --auto做了什么,我想进一步清理,但如果git gc --auto觉得不需要做些什么,我想省去麻烦。有没有办法检查 的返回值git gc --auto,或者事先检查是否有必要运行它?

git

2
推荐指数
2
解决办法
2108
查看次数