From: John McKown
Sent: Monday, November 26, 2012 6:07 PM
Subject: [git-users] deletion of git "object"?
OK, this is more a question to help me understand git internals than an
actual problem that I am having. But suppose I create a new branch. "git
checkout -b newbranch". I am now in the "newbranch" branch. So I create a new
file in my working directory such as: "date >ldate". I now have ldate in my
working directory. I do: "git add ldate" and "git commit -m 'added ldate to
track last date'". The contents of ldate are kept in a git object whose name is
the sha1sum of the contents. I now decide this is silly. So I want to eliminate
"newbranch". The simpliest way, not having done a "git push" is to just kill it
with "git branch master;git branch -D newbranch". Now, after this, is the git
object for the now non-existent ldate file already cleaned up? Or do I need to
do something else, such as "git gc", "git prune"? I'm pretty sure that the "git
gc" is the best bet.
The objects are still there for a while. There is I believe an automatic
cleanup after, IIRC 30 days, that cleans the logs, reflogs and other loose
items that are no longer referenced . There are even 'lost and found'
methods should the worst happen and you need to find a dropped object.
I think (but don't quote me) that the branch creation / deletion log is now
enabled by default so it should be possible to immediately recover the deleted
There is usually no need to do a special 'git gc' (garbage collection), but old
 it could be that it is the git gc auto that ensures the 30 days .. I just
let the tools do their thing ;-)