Git est un outil de gestion de version, à l'instar de CVS ou Subversion. Avec cette différence fondamentale qu'il fonctionne en mode décentralisé. C'est à dire que vous n'avez pas besoin de serveur distant pour utiliser git : les dépôts sont sur votre machine locale.

il a été développé à l'origine par Linus Torvalds, et il est utilisé pour gérer les sources du noyau linux.

Vous aimiez CVS ? Vous adoriez Subversion ? Git va vous transcender.

Utilité

Le mode décentralisé, s'il est déroutant pour les habitués des classiques CVS / Subversion, présente quelques avantages trés... euh... avantageux :|

  • Il est utilisable extrémement rapidement. En 3 secondes, on a crée un dépot. Quand je pense qu'il m'a fallu une demi-journée pour installer mon premier serveur subversion...
  • Le dépôt n'est pas dépendant du réseau. C'est plus rapide, et vous pouvez coder dans le train.
  • Il est possible de créer autant de dépôts que l'on veut sur une même machine

Ainsi, chacun peut disposer de la puissance d'un outil de gestion de version, sans avoir à se perdre dans l'installation complexe d'un serveur.

Git est particulièrement utile quand :

  • On aime bien commiter souvent, mais qu'on ne peut pas parce qu'il ne faut pas "pourrir" le CVS / SVN
  • On n'a pas accès au CVS / SVN, pour des raisons plus ou moins ésotériques

Installation

Git s'installe facilement. Exemple avec Ubuntu :

sudo apt-get install git

Utilisation (trés) basique

Les fonctionalités de base sont simples à utiliser.

Pour initialiser un dépôt, il suffit de se placer dans le répertoire des sources, et :

git init
git add .
git commit -a

Ces commandes initialisent un nouveau dépot, indiquent à git d'y placer le répertoire courant, et de lancer un commit.

Supposons que j'ai modifié un fichier toto.txt à la racine de mon répertoire. Je vais donc commiter :

git add toto.txt
git commit

La commande commit ne prend pas en compte automatiquement les fichiers modifiés. Il faut les spécifier automatiquement avec la commande

git add

Ça peut paraître contraignant, mais c'est en fait trés pratique à l'usage (si si, vous verrez).

Pour obtenir un statut du dépot (fichiers modifiés, etc.), utiliser la commande :

git status

Pour voir l'historique des commits sur la branche en cours :

git log

Utilisation (un peu) avancée

Pour voir la liste des différences depuis le dernier commit :

git diff

Pour générer la liste des fichiers modifiés depuis le premier commit :

(Note : est l'identifiant du premier commit, de la forme e89345b2e..., qu'on récupère tout en bas du log)

git log
git diff --name-only

Pour voir une ancienne version spécifique d'un fichier :

git show :

Annuler le dernier commit (à manier avec précaution, irréversible, et un peu brutal) :

git reset --hard HEAD^

Parfois, on veut marquer un état précis de l'arbre du développement, pour créer, par exemple, une version stable. C'est trés facile avec git :

git tag

Pour voir tous les tags existants :

git tag -l

Git peut évidemment gérer plusieurs branches de développement. Pour créer une nouvelle branche à partir de la branche courante :

git checkout -b  HEAD

Pour lister les branches existantes :

git branch

Pour passer d'une branche à l'autre : (Note : Il est possible de commiter indépendamment sur différentes branches (c'est même le but))

git checkout

Ces quelques commandes vous permettront de démarrer en douceur. Il est évident qu'il ne s'agit que d'une infime partie des possibilités de l'outil. Nous en reparlerons.