有没有办法清理git?

She*_*lam 152 git

似乎我的项目随着每个git变得越来越大commit/push.有没有办法清理我的git文件夹?

hou*_*oft 210

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

但是,您可能希望git gc"清理不必要的文件并优化本地存储库"(手册页).

另一种可能是相关的命令是git clean删除从你的树(未跟踪文件手册页).

  • **`警告`**@Kalle上面写的命令将删除**每个_> UNTRACKED <FILE AND DIRECTORY_在你的GIT ROOT**,_not_只是".gitignore中列出的文件".任何未被Git跟踪的内容,无论是否在.gitignore中列出,都将被删除.`git clean -dfX`(注意`X`上的情况)只会删除`.gitignore`中具有适用规则的项目.**请注意这个警告:**_Never运行`git clean`,无需在交互模式下运行,使用`-i`代替`-f`,或者至少先执行干运行 - `-n`然后运行再次使用`-f`._ (94认同)
  • git clean -d -f -x删除.gitignore中列出的文件等.例如,不属于git,Pods文件夹等的工作空间. (29认同)
  • 或者进行备份:-) (4认同)

pha*_*tri 56

跑:

git remote prune origin
Run Code Online (Sandbox Code Playgroud)

删除已经删除origin但仍在本地可用的所有陈旧跟踪分支remotes/origin.

git gc --auto
Run Code Online (Sandbox Code Playgroud)

' G arbage C ollection' - 执行内务处理任务(压缩修订,删除松散/不可访问的对象).该--auto标志首先确定是否需要任何工作,如果没有则退出而不做任何事情.

  • 对那些做什么有些解释?我知道我们可以谷歌搜索他们并搜索他们的文档,但通常的做法是在涉及代码或命令时提供答案的简短描述. (4认同)

Von*_*onC 25

每个提交都会使git repo变得更严重的一种情况是您提交定期生成的二进制文件.它们的存储效率不如文本文件高.

另一个是你在一个仓库中有大量文件(这是git限制)而不是几个子目录(作为子模块管理)的文件.

这篇关于git space的文章中,AlBlue提到:

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

如果您的git仓库中存储了大型二进制文件,您可以考虑:


小智 22

是的,git gc是解决方案,当然,

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

但这里有一些更重要的东西......

等待那些巨大的git和externals处理的秒数被收集到很长的几分钟,其中收集了几个小时的低效时间,

从头开始创建一个新的(完全不仅仅是一个分支)存储库,包括唯一的最新版本的文件,当然你会丢失所有历史记录,

但是在代码世界中,现在不是时候变得多愁善感,没有必要拖延整个5年的代码每次提交或差异,如果你怀旧,你仍然可以将旧的git和externals存储在某个地方:]

但是,在某些时候你真的必须继续前进:]

你的团队会感谢你!

  • 完全同意,我们最近采用了一种旧的存储库并且没有回头看过这种方法; 好吧,主要是因为我们不能,但你知道我的意思:) (12认同)

ana*_*han 9

git clean -d -f -i 是最好的方法.

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

-i 代表互动.

  • 虽然OP的问题很模糊,而且在这方面这是一个很好的答案,但我想指出`git clean`不是为了清理repo而是清理目录.对于盲目复制/粘贴的用户,请注意; 这将删除您可能在本地实际需要的未跟踪文件/目录. (3认同)

use*_*ser 9

运行此命令非常危险,但会通过删除所有git恢复/备份文件来缩小存储库:

git reflog expire --expire=now --all && git gc --prune=now --aggressive
Run Code Online (Sandbox Code Playgroud)

它将擦除git用于从某些错误命令恢复存储库的所有文件,例如,如果你这样做git reset --hard,你通常可以恢复丢失的文件.但如果你git reset --hardgit reflog expire...命令之前做,那么你就失去了一切.现在,您唯一的希望是使用一些分析文件系统的工具,并尝试恢复已删除的文件(如果它们未被覆盖).

  • 我真的不会把它称为“极端危险”。我只是给它贴上一些您必须“小心”的东西。以我的经验,很少有人真正接触过reflog或无法访问的对象-大多数甚至都不知道它们在其中或如何与它们进行交互,因此陷入了它们有用的情况,或做得很糟糕的情况低效的方式。我要说的是,如果您不知道并且不知道这些命令会做什么,那么您可以安全地运行它们! (2认同)

归档时间:

查看次数:

168658 次

最近记录:

6 年,10 月 前