Git est un gestionnaire de version. Fini les méthodes à base copier/coller+zip pour sauvegarder les étapes d'un projet ou d'un document. Fini l'envoi par mail du code à ses coéquipiers. Git est fait pour ca!

C'est un outil très utilsié à l'école, une fois que vous aurez appris à vous en servir, vous le trouverez indispensable. En première année vous aurez des cours dessus, mais ils vous font souvent plus peur qu'autre chose. En effet git est un outil très puissant, il est largement utilisé dans le milieu professionnel, par exemple sur des projets de programmation. Cependant on peut aussi en faire une utilisation basique très simplement. Au fur et à mesure que vous l'utiliserez vous découvrirez les fonctionnalités plus avancées.

Je vais vous expliquer ses différentes fonctionnalités par l'exemple, n'hésitez pas à ouvrir un terminal et à essayer vous même.

Gérer des versions localement

La première utilisation que vous pouvez en faire est de simplement suivre l'évolution d'un fichier sur votre ordinateur. Première chose à faire: installer git. Normalement il est préinstallé sur ubuntu mais au cas ou:
sudo apt-get install git

Ensuite placez vous dans le répertoire qui vous intéresse:
mkdir testgit
cd testgit

Ici nous prendrons l'exemple de quelqu'un qui est en train de rédiger un rapport. Git peut suivre n'importe quel type de fichier (.doc ou .odt) par exemple. Ici nous utiliserons un fichier texte simple, car git offre un outil de comparaison des modifications pratique sur les fichiers textes. Ce qui est primordial quand vous programmez. Créons donc rapport.txt
touch text.txt

Maintenant nous allons maintenant initialiser git dans ce répertoire:
loik@loik-fixe:~/test git init
Initialized empty Git repository in /home/loik/test/.git/
loik@loik-fixe:~/test ls -a
.  ..  <strong>.git</strong>  rapport.txt

Constatez que git a créé le répertoire caché ".git", c'est ici que sont stockées les informations qui permettent à git de suivre vos fichiers. Vous n'avez pas besoin d'y toucher.

Voyons maintenant comment dire à git de suivre votre fichier. Les commandes de bases sont les suivantes:
  • git ls [folder]: liste les fichiers suivis dans le répertoire indiqué
  • git status [folder]: Affiche l'état actuel du dépot, quels fichiers suivis (tracked), quels fichiers ne sont pas suivis (untracked files). Liste aussi les fichiers modifiés et si les modifications ont été enregistrées.
  • git add fichier1 fichier2 ... : Tracke le fichier si il n'était pas tracké, et enregistre les dernieres modifications (depuis le dernier commit).
  • git commit -m "message de commit": Je reviendrai la dessus. Permet de "regrouper" les modifications que vous avez ajoutées avec add.
  • git rm fichier : pour supprimer un fichier et arreter de le suivre. Si vous supprimez avec rm directement git ne sera pas au courant.
  • git mv origin destination: pareil que pour rm mais pour mv.
  • git log: permet de voire la liste des commits et des messages de commit.
Avec ces différentes commandes vous pourrez déjà faire une grande quantité d'actions. Passons à la pratique maintenant.

Nous sommes dans ce que l'on appelle le répertoire de travail, git sert en quelque sort à faire des "photos" à différents instants de votre travail. Vous pourrez ainsi revenir en arrière si vous n'aimez pas les dernières modifications que vous avez faites. Git fonctionne par branches, je vous expliquerai plus loin le fonctionnement des branches. Pour l'instant retenez que la branche par défaut est "master", votre répertoire de travail s'appelle "work".

Voyons ce que nous dis git pour l'instant:
loik@loik-fixe:~/test git status .
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add &lt;file&gt;..." to include in what will be committed)
#
#   rapport.txt
nothing added to commit but untracked files present (use "git add" to track)

On voit bien qu'ici on est sur la branche "master" et qu'il y a un fichier non suivi: rapport.txt. Pour l'instant il n'y a pas eu de commit :"Initial commit". Et il n'y a rien qui est prêt à etre commité: "nothing added to commit". On va dire à git de suivre notre fichier:
loik@loik-fixe:~/test git add rapport.txt
loik@loik-fixe:~/test git status 
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached &lt;file&gt;..." to unstage)
#
#   new file:   rapport.txt
#

Cette fois on voit qu'il y a une modification prête à etre commitée. Il s'agit de la création du fichier rapport.txt. Pour l'instant git ne suit rien du tout, nous allons commiter ces modifications, comme ca on aura une image de l'état initial de notre répertoire.
loik@loik-fixe:~/test git commit -m "voici l'état initial du dossier"
[master (root-commit) c7c8b93] voici l'état initial du dossier
 0 files changed
 create mode 100644 rapport.txt
loik@loik-fixe:~/test git log
commit c7c8b939892b0fe62e8a96d13d3cf9ef43beeae6
Author: Loik Le Devehat &lt;loik.le-devehat@telecom-paristech.fr&gt;
Date:   Tue Nov 13 21:39:29 2012 +0100

    voici l'état initial du dossier

C'est fait, maintenant git suit votre fichier. Git vous donnes différentes informations sur le commit, chaque commit possède un numéro unique. Vous n'avez pas besoin de les retenir. Pour voir facilement ou en sont nos commit on utilisera git log. Ici on voit l'auteur, la date, le hash du commit et le message.

Petite astuce: Parfois vous avez un commit plus important, par exemple la version finale du projet. Vous pouvez donner un alias à un commit en recopiant son hash dans le git log, puis en utilisant la commande tag:
git tag etat_initial c7c8b939892b0fe62e8a96d13d3cf9ef43beeae6

Maintenant vous pourrez vous référer à ce commit dans d'autres commandes en utilisant ce tag. Le nom du tag ne doit pas contenir d'espaces ni de caractères bizarres.

C'est parti, écrivons notre rapport maintenant!