In article <C022F034-F60E-4E89-A174-DC0F53ADEC19@xxxxxxxxxxxxxxxxxx>, Brian Gernhardt <benji@xxxxxxxxxxxxxxxxxx> wrote: > On Feb 12, 2010, at 4:57 PM, Ron Garret wrote: > > > That would require a separate branch for every snapshot, no? I want > > this to be lightweight. It's not so much the creation of a zillion > > branches that bothers me, but having to come up with a new name every > > time would be a real hassle. > > Ahhhh... You could just use the stash and use some kind of recognizable > message: git stash Failed: fooed the bar badly > > Or you could make a stash-like snapshot branch? The following sequence does > something like that: > > git add . > git commit -m "Ooops" > git branch -f > git reset --hard HEAD^ > > After a few failures like that, you can look over all the snapshots with > > git log -g snapshots > > By default they will be kept around for 30 days, or the current setting of > gc.reflogexpireunreachable. If you want to keep a snapshot around for more > than 30 days, you probably want to give it a real branch anyway. > > You could either create a script that uses the above commands or a patch that > makes git-stash take a --ref= argument and then set: > > alias.snapshot = stash --ref=refs/snapshots Yes, I think the right answer is going to be something like this: git symbolic-ref HEAD refs/heads/snapshots git rm --cached -r . git commit --allow-empty -m 'Snapshot branch' Then, to take a snapshot: git branch snapshot git checkout master -- path git add path git commit -a -m 'Snapshot of [path]' git checkout master (All of that will be in a script of course.) And to rollback: git checkout snapshot-[n] -- path Or something like that. I haven't actually tried this yet, but it seems like it ought to work. Am I right that 'git checkout branch' changes branches, but 'git checkout branch -- path' doesn't? That's very confusing. Useful, but confusing :) rg -- 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