On Fri, Mar 08 2019, Mikko Rantalainen wrote: > If I configure bare repo with > > git config gc.pruneExpire never > git config gc.reflogExpire never > > then git will never garbage collect any commit ever stored in the repo. > This is what I want. > > However, all commits referenced only via reflog are kept as loose > objects and will not be included in packs. In long run this will cause > > warning: There are too many unreachable loose objects; run 'git prune' > to remove them. > > and the performance of the repository will slowly decrease. > > > If I have understood correctly, git should notice that reflog will keep > referenced commits forever and include all those commits in packs > instead of keeping those as loose forever. > > A more generic behavior might be to always compress all loose commits in > (one?) special pack so the performance would stay good even if > gc.reflogExpire is very long instead of "never". > > > Discussion about this case: > https://stackoverflow.com/questions/28092485/how-to-prevent-garbage-collection-in-git > https://stackoverflow.com/questions/55043693/is-it-possible-to-get-git-gc-to-pack-reflog-objects Just to add to Jeff's E-Mail, the case he's describing is something I wrote a stand-alone test case for here: https://public-inbox.org/git/87fu6bmr0j.fsf@xxxxxxxxxxxxxxxxxxx/ Try to run it, it's probably the same behavior you're seeing, and it has nothing per-se to do with reflogs.