Since my last post on the subject, I’ve become much more familiar and comfortable with Git.

While I still don’t consider myself an expert – especially when it comes to truly distributed collaboration – I did manage to pass on some basic knowledge to those around me just getting started.

In the process I came up with a very concise introduction – and even though it’s almost trivial, the following illustration of the basic workflow might be worth sharing (ASCII art ahead):

                                                       repository (remote)
                                                            ^      |
                                                            |      |
                                                           push   pull
                                                            |      |
                                                            |      V
working copy --add--> index (staging area) --commit--> repository (local)
               \                                  /
                \------------commit -a-----------/

Useful Commands:

  • status
  • log [-p] [--stat]
  • diff [-w] [--color-words]
  • checkout <treeish> <file> (reverting)
  • init
  • clone

My configuration is available on GitHub – this might serve as a reference for further exploration (e.g. aliases).