问题 当它变得很大时,是否可以清理.git中的git登录


我真的不喜欢有怪物.git文件夹(2GB),我不关心2002年的变化,我不想创建新的存储库,所以我该怎么做才能清理.git / log?

请注意,我希望它不是仅限本地的,下次我想要自2011年以来没有历史记录或历史记录克隆存储库。

谢谢


11678
2018-01-23 09:41


起源

看一下 这个答案。我不知道它会减少多少 .git 目录大小,但这是最简单的尝试方法,不会对存储库历史记录进行任何重大更改。答案 这个问题 也可能有用。 - KL-7


答案:


从你的问题来看,我认为你想要的东西 这个

GIT-变基(1) 就是这么做的。

$ git rebase -i HEAD~5

git awsome-ness 包含一个例子。

  1. 不要用 git-rebase 在公共(远程)提交。
  2. 确保您的工作目录清洁(commit 要么 stash 你目前的变化)。
  3. 运行以上命令。它启动你的 $EDITOR
  4. 更换 pick 之前 C 和 D 通过 squash。它会将C和D合并为B.如果要删除提交,则只需删除其行。

如果您迷路了,请输入:

$ git rebase --abort  

但是,要安全地压缩.git文件夹,不建议使用上述文件夹。您可以尝试以下内容中提到的内容 评论 通过Linus。

git repack -a -d --depth=250 --window=250

深度的东西只是三角形链的深度(让旧历史更长一些 - 值得节省空间),窗口的事情是我们希望每个delta候选者扫描多大的对象窗口。


6
2018-01-23 09:50



git rebase 将完全重写提交历史记录,为已经从该存储库中提取的所有人员带来很多麻烦。我不认为这是缩小规模的正确方法 .git 目录。 - KL-7
我不确定但是在我做git重新包装之后什么都没有改变,我甚至不需要推动。下次我想要克隆已经清理过的存储库。 - Cynede
我想,既然你不想跟踪旧的提交 git-rebase 是你的正确选择。但是你可以尝试使用 git gc --aggressive --prune 首先看它是否有帮助。 - Pulkit Goyal


git gc --help 得到文件。
  在你的情况下 git gc --aggressive --prune 会变好。


3
2018-01-23 12:44





也许你可以尝试:

$ git gc --auto

手册页说:

在当前存储库中运行许多内务处理任务,例如压缩文件修订(以减少磁盘空间并提高性能)以及删除可能已从先前调用git add创建的无法访问的对象。

建议用户定期在每个存储库中运行此任务,以保持良好的磁盘空间利用率和良好的运行性能。

这只是一个建议,我从来没有必要使用gc。


1
2018-01-23 10:22



并没有做太多我认为我需要删除历史或历史较早的某个日期。 - Cynede