Subject: Re: [boost] [githelp] Merging two repositories
From: Philippe Vaucher (philippe.vaucher_at_[hidden])
Date: 2013-12-11 03:28:46
> Learn about git reflog so you know how to reset bad situations, or at worse
>> do some physical backup of the directories if you are unsure and give it a
> OK, thanks for pointing it out. I might just buy a git book and read it,
> since I am not patient enough to read everything online.
Here is a super-quick-micro-crash-course:
- git commits form a DAG (you can imagine it as a tree if it helps). A
branch/tag is just a little sticker put on a part of a tree. Creating a
commit in git is just adding a new part on the tree and moving the sticker
"master" to it. Rewriting a commit is just going back a commit on the tree
and creating a new one, and moving the sticker "master" to it.
- when you rewrite history, delete commits, whatever.... they are not
really deleted. They are just not visible anymore, because there are no
"stickers" attached to them anymore.
- "git reflog" shows you the history of what you did to the repo. So you
see all commits you did, all rebases, all checkouts, etc, each time with
- The only really destructive operation in git is "git gc", which
collects commits/whatever that don't have a sticker attached to them.
Given this information, you can now guess that "trying out things" in git
is super safe... you try your stuffs, you verify the results, and if you
are unhappy you "git reflog", find the SHA1 where stuffs were still ok, and
"git reset --hard SHA1" and voila, you're back to your previous "good"
state. There's also "git fsck" which can show you "lost" commits.