Git is a well known distributed version control system which was designed to handle everything from small to very large projects with speed and efficiency. Many developers (including myself) have used it for years not knowing following things.

Origin of the name

The official readme states:

The name “git” was given by Linus Torvalds when he wrote the very first version. He described the tool as “the stupid content tracker” and the name as(depending on your mood):

  • random three-letter combination that is pronounceable, and not actually used by any common UNIX command. The fact that it is a mispronunciation of “get” may or may not be relevant.
  • stupid. contemptible and despicable. simple. Take your pick from the dictionary of slang.
  • “global information tracker”: you’re in a good mood, and it actually works for you. Angels sing, and a light suddenly fills the room.
  • “goddamn idiotic truckload of sh*t”: when it breaks

Linus once stated: “I’m an egotistical bastard, and I name all my projects after myself. First ‘Linux’, now ‘git’.”

Git was initially a toolkit for a version control system

Git was initially a toolkit for a version control system rather than a full user-friendly VCS. It has plumbing (low-level commands) and porcelain (high-level commands). Low-level commands allow you to basically create your own VCS. Luckily, that is rarely the case since the porcelain is simply awesome.

SVN interoperability

Git has built-in support for SVN. It allows a developer to take advantage of Git on projects which use SVN, or it can be used to migrating to Git.

Lost data are not really lost

Have you ever accidentally deleted a branch or done a hard reset and later found out you shouldn’t have done that? There is a git reflog which will help you out! It records when the tips of branches and other references were updated in the local repository. For more details see documentation.