删除本地存储库中的历史记录,而不是使用--depth 1再次克隆它

时间:2015-11-25 00:10:07

标签: git

标题基本上。

我只是将一些内容与我的.gitignore混合在一起,并将我的.git目录臃肿到> 100mb(它是一个像100提交总数的回购..)。

所以我是一个懒惰的家伙,想知道是否有可能删除我的历史记录。我不想改变某些东西或东西,我只是想缩小我的.git目录大小。

当没有办法做到这一点时,我只会git clone --depth 1我的回购获得相同的效果。

1 个答案:

答案 0 :(得分:1)

这是两个相互矛盾的目标:

  • 删除历史记录意味着一个全新的仓库(rm -Rf .gitgit init .):这意味着您 强制推送新的本地仓库{{{ 1}},也破坏远程仓库的历史记录,

  • 保持远程仓库的完整性意味着在本地使用git push --force,即safe to do since Git 2.0, as I have documented here(即您可以从本地浅层仓库推回远程仓库)

    < / LI>

第二种方法似乎是最安全的:

  • 保留远程仓库
  • 在本地优化磁盘空间

注意:对于包含完整历史记录的本地仓库,仅git gcgit repack不足以真正缩小git clone --depth 1文件夹的大小。
请参阅&#34; git gc --aggressive vs git repack&#34;。

.git

(对于刚刚克隆的回购品,这不会有太大作用,只会对您已经工作一段时间的本地回购有效) 另外,如果您在过去的操作中执行了git filter-branch,那么如果您希望缩小{{1}的大小,则git gc git repack -Ad # kills in-pack garbage git prune # kills loose garbage 文件夹仍会保留您需要删除的.git文件夹}}

  

AFAIU原始问题以及我想要这样做的方法正是在没有删除.git/refs/original/文件夹的情况下,只需删除git日志数据的本地副本即可使其成为&#39;状态与.git/

之后的状态相同

请参阅&#34; Converting git repository to shallow?&#34;

您可以尝试:

.git