Steven Grimm wrote:
Domenico Andreoli wrote:
What is this reflog thing and why is required?
It is a log of where each ref pointed at any given time. Or rather, a
log of changes to refs, with timestamps. It is not *required* per se
(you can turn it off and almost all of git will continue to work as
before) but it's handy in that you can say stuff like
git checkout -b newbranch master@"{4 days ago}"
and git will give you a new branch pointing at the rev that master
pointed to 4 days ago, even if it's a rev that is no longer reachable
from any of the existing heads (e.g., because you did a "git rebase" and
the rev in question was replaced by a new one.) Obviously as soon as you
do a "git gc" you will lose the ability to go back to unreachable revs
using the reflog.
Not strictly true. "git gc" does take the reflogs into account when
determining reachability, but it also prunes the reflogs periodically to
prevent them from growing without bound (and preventing pruning of
otherwise unreachable objects).
From the git-gc manpage:
CONFIGURATION
The optional configuration variable gc.reflogExpire can be set to
indicate how long historical entries within each branch's reflog should
remain available in this repository. The setting is expressed as a
length of time, for example 90 days or 3 months. It defaults to 90
days.
Regards,
Rogan
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html