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 -aCes 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 <fichier>
Ç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 diffPour générer la liste des fichiers modifiés depuis le premier commit :
(Note :
git log git diff --name-only <commit>
Pour voir une ancienne version spécifique d’un fichier :
git show <commit>:<chemin/vers/le/fichier>
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 <nom du tag>
Pour voir tous les tags existants :
git tag -lGit peut évidemment gérer plusieurs branches de développement. Pour créer une nouvelle branche à partir de la branche courante :
git checkout -b <nouvelle_branche> 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 <nom_de_la_branche>
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.