git

git est logiciel de gestion de version. Cet outil permet de gérer l’évolution d’un ensemble de fichiers au cours du temps. Grâce à cet outil on peut revenir à une version antérieur d’un fichier à tout moment. Il aussi bien destiné aux développeur qu’au infographistes qui souhaiteraient par exemple suivre l’évolution de leur fichier source photoshop. Il permet de faire facilement marche arrière sur un des fichier du projet ou sur l’ensemble du projet.

Git est disponible sous Windows, mac et Linux. Il permet de travailler à plusieurs sur un même projet sans ce marcher dessus.

Installation

Installons le via la commande suivante :

Activons la couleur dans Git (pour avoir une meilleur lisibilité par la suite):

Editez le fichier .gitconfig qui se trouve dans votre répertoire de connexion et indiquez y votre pseudo et email.

Vous pouvez vérifier vos paramètre avec la commande suivante :

Les même paramètre peuvent apparaitre en doublons car git lit les fichier /etc/gitconfig et ~/.gitconfig (attention seulement la dernière valeur sera retenu par git).

Pour initialisé un nouveau dépôt git au sein d’un répertoire

Nous allons créer notre premier dépot, un dépot représente la copie du projet. Si votre projet existe déjà, alors allez dans le dossier de ce dernier et tapez la commande suivante pour créer le nouveau dépot :

Un nouveau répertoire .git a été créé avec tous les fichiers nécessaires au fonctionnement du dépôt.

Création d’un dépôt servant de serveur

Avoir un dépôt sur un serveur, permet aux participant du projet de cloner ce dernier en local pour travailler, de tester leur version, puis d’enregistrer les modifications sur le serveur par la suite. Les fichiers sont donc centralisés sur le serveur. La commande suivante, indique à git de créer un dépôt en mode serveur :

Cloner un dépôt depuis un serveur

L’utilisateur souhaitant cloner le dépôt en local sur sa machine afin de travailler n’a plus qu’a taper la commande suivante :

Ajouter les fichiers du projet

Pour suivre l’évolution des fichiers, il faut demander à git de les ajouter (de les indexer).

Pour ajouter le fichier toto :

Pour ajouter tous les fichiers finissant par l’extension .cpp :

Enregistrer la version initial du projet

La commande suivante permet d’enregistrer votre première version de votre projet.

SAvoir quels sont les fichier qui ont été modifiés

Pour connaître le statut des fichiers au sein du répertoire du projet (savoir si il y en a des nouveaux, ou si certain ont été modifiés), il faut taper la commande suivante :

Le message nothing to commit (working directory clean) indique que rien n’a changé depuis la dernière fois, aucun fichier na été ajouté ou modifié.

Ajout d’un nouveau fichier au projet

Admettons que vous ajoutiez un nouveau fichier (nommé titi) au répertoire contenant votre projet, dans ce cas la commande git status vous retournera le message suivant:

Comme vous pouvez le voir, ce nouveau fichier (titi) apparaît comme étant un fichier untracked, ce qui signifie que ce dernier n’est pas suivi par git. Deux possibilité se présentent à vous, sois vous décider de suivre l’évolution de ce fichier soit vous souhaitez ignorer ce dernier.

Pour ajouter ce nouveau fichier (nommé titi) au suivi :

Ignorer un fichier se trouvant dans le répertoire du projet

Pour ignorer définitivement ce fichier et ne plus l’afficher dans le message délivré par la commande git status on peut éditer le fichier .gitignore et y ajouter titi.

Inognrer un ensemble de fichiers se trouvant dans le répertoire du projet

Par exemple pour ignorer tous les fichiers ayant l’extension .txt, ouvrez le fichier .gitignore avec votre éditeur préféré et ajouter la ligne suivante :

Savoir quels sont les fichiers qui ont été modifiés et enregistrer les modifications

Admettons que nous avons travaillé sur le fichier index.html de notre projet, lorsque nous tapons la commande git status nous avons maintenant le message suivant :

git nous indique le message « Changed but not updated« , cela signifie que le fichier « index.html » est un fichier en suivi de version dont la copie se trouvant dans le répertoire de travail a changé. Pour que git prenne en compte ce changement, il faut utiliser la commande git add.

La commande suivante ordonne à git de mettre à jour le fichier index.html qui vient d’être mis à jour :

En tapant de nouveau la commande git status de nouveau vous aurez le message suivant :

Savoir quelles lignes ont été modifiés ou ajouter dans les fichiers

Avant d’indexer (mettre à jour avec git add) un fichier qui a été modifié, la commande git diff permet de connaître quelles sont les modifications qui ont été apportées aux fichiers (quelles ligne de code ont changé).

Valider les modifications

Pour enregistrer les modifications et valider cette version du projet il faut utiliser la commande git commit:

La commande lancera votre éditeur (paramétrer dans la variable d’environnement $EDITOR); l’éditeur affiche une copie du message git status… Ces lignes peuvent être laissées ou effacés, en fait ce fichier texte vous servira pour savoir quelles modifications on été apportées lors de ce commit (enregistrement de version).

La commande suivante:

permet d’ajouter une copie du message de sortie git diff.

Eviter d’avoir à taper les commandes git add à chaque fois que des fichiers ont été modifiés

Il existe une option à passer à git commit permettant d’ajouter automatiquement tous les fichiers modifiés. Cela évite de faire git add à chaque modification. La commande git add sera tout de même nécessaire pour les fichiers nouveaux.

La commande suivante permet d’enregistrer et valider une nouvelle version du projet :

N’oubliez pas de faire git add pour les éventuels nouveaux fichiers que vous auriez ajouter, faites git status pour voir si vous en avez des nouveaux.

Effacement d’un fichier

Si vous avez effacer un fichier (par exemple le fichier toto) au sein de votre répertoire de travail alors la commande git status vous indiquera le message suivant :

La commande git rm permet d’indiquer à git de prendre en compte cet effacement de fichier dans la prochaine version à valider (via le commit) :

Lors du prochain commit, la version ne comportera plus le fichier toto.

Visualiser toutes les versions du projets qui ont été validés

A chaque fois qu’on fait git commit, on valide une version, dit en d’autre terme on enregistre le projet à un instant t. On dispose donc grâce à git de plusieurs enregistrements du projet au cours de sa longue vie. Pour visualiser tous les commit (tous les enregistrements) qui ont été effectués, il suffit de taper la commande git log :

Chacun des commit est indiqué avec sa somme de contrôle SHA-1
Les différentes versions apparaissent par ordre chronologique, la plus récente en haut.

Afficher les deux derniers commit

Si vous avez beaucoup de versions, la commande git log -2 permet d’afficher que les deux dernières. git log -p affiche les différences existantes entre les versions.

Afficher la liste des commit ayant étés effectués les deux dernières semaines

git log –since=2.weeks

Comment ramener un fichier à son état précédent

Vous avez modifié un fichier par erreur, vous n’avez pas encore effectué de commit. Lorsque vous faites git status vous avez le message suivant :

git status vous indique le message suivant « use « git checkout — … » to discard changes in working directory« ; cela signifie qu’en tapant la commande git checkout — nom_fichier on annule les modifications effectués sur notre fichier, et on récupère la version du fichier qui se trouve dans la dernière version validé (c’est à dire dans le dernier commit).

Essayons :

Cette commande (ci-dessus) aura donc pour conséquence de récupérer dans la dernière version validée (le dernier commit) le fichier index.html; Le fichier index.html se trouvant dans le répertoire du projet et contenant les modifications sera écrasé.

Revenir à une ancienne version du projet

Vous avez modifié des fichiers, vous avez effectué un commit, et rien ne va plus vous souhaiteriez revenir à la version précédente. Pas problème Git est est là pour ça.

Pour annuler le dernier commit et revenir à l’avant dernier :

Pour revenir à l’avant-avant dernier commit :

Pour revenir à un commit précis (dont on a obtenu la clé SHA1 avec la commande git log):

Ensuite pour restaurer les fichiers, faites :

ce dernier va vous indiquer tous les fichier modifier.

Faites ensuite la commande suivante pour récupérer les fichiers souhaités :

Revenir à une ancienne version du projet (d’une manière plus radicale)

La commande suivante annule le dernier commit et revient à l’avant dernière version (attention : tous les fichiers contenu dans le répertoire seront modifiés):