有没有办法清理混帐?

似乎我的项目越来越大,每个git commit/push 。 有没有办法清理我的git文件夹?

我不确定你想要什么。 首先,当然每次你提交/推送的目录会变得更大,因为它必须存储每个额外的提交。

但是,可能你想git gc这将“清理不必要的文件和优化本地存储库”( 手册页 )。

另一个可能相关的命令是git clean ,它会从树中删除未跟踪的文件( 手册页 )。

跑:

 git remote prune origin 

删除所有已经在origin位置被移除,但仍在本地可用remotes/origin旧的跟踪分支。

 git gc --auto 

“垃圾收集” – 运行pipe家任务(压缩修订,删除松散/无法访问的对象)。 – --auto标志首先确定是否需要任何工作,如果没有做任何事情,则退出。

一种情况是,你的git repo在每次提交时都会变得更加严重 ,这就是你提交经常生成的二进制文件的地方。 他们的存储将不会像文本文件一样高效 。

另一个是在一个回购站(这是git的限制 )内有大量文件,而不是几个subrepos( 作为子模块pipe理 )。

在这篇关于git空间的文章中 ,AlBlue提到:

请注意,Git(和Hg以及其他DVCS)确实遇到了(大)二进制文件被检入,然后被删除的问题,因为它们仍然会显示在存储库中并占用空间,即使它们不是最新的。

如果你的git仓库里有大的二进制文件,你可以考虑:

  • 在外部存储库中pipe理这些二进制文件。
  • pipe理你的.git回购大小
  • 尝试使用git filter-branch从历史logging中删除这些二进制文件(警告:这将重写历史logging,如果您已经推动了您的repo,并且其他人已经从中撤出)

git clean -d -f -i是最好的办法。

这将有助于以更可控的方式进行清洁。

-i代表互动。

是的, git gc是解决scheme,当然,

和本地 – 您可以删除本地存储库并再次克隆,

但是这里有更重要的东西

你等待那个巨大的git&externals处理的秒数被收集到长时间的分钟里,

从头开始创build一个新的(完全不只是一个分支)存储库 ,包括唯一的最新版本的文件, 当然,你将失去所有的历史,

但是在代码世界里,没有时间去感悟,没有任何一点拖延整个5年的代码每一个提交或差异,你仍然可以存储旧的git&外部的地方,如果你怀旧:]

但是,在某个时候,你真的不得不前进:]

你的团队会感谢你!

不知道它是否会缩小它,但是在我运行git clean之后,我经常做一个“git repack -ad”,这减less了pack文件的数量。