Initialiser un nouveau dépôt Git dans un répertoire sandwich, et créez le fichier burger.txt qui contient la liste des ingrédients d’un burger, un ingrédient par ligne. "Steak", "Salade", "Tomate", "Cornichon" et "Fromage"
Je vais créer un nouveau dépôt git, à l’aide de la commande git init, et y créer un fichier
nommé
burger.txt listant les quelques ingrédients d’un burger, un par ligne :
Vérifiez avec git status l’état dans lequel se trouve votre dépôt. Vos modifications (l’ajout du fichier burger.txt) devraient être présentes seulement dans la copie de travail.
Voici ce que retourne git status pour voir l’état du repo. On peut voir que les
modifications faites (création de burger.txt) sont listées, le fichier apparait en rouge,
car il n’est pas encore suivi par git, il le sera lors de la prochaine étape.
Préparez burger.txt pour le commit avec git add burger.txt. Utilisez git status à nouveau pour vérifier que les modifications ont bien été placées dans l’index. Puis, utilisez git diff --cached pour observer les différences entre l’index est la dernière version présent dans l’historique de révision (qui est vide).
Nous allons maintenant préparer le fichier burger.txt au commit avec git add burger.txt et
vérifier l’état du repo avec git status mais aussi lister les
changements en comparant l’index et la dernière version du repo git diff –cached :
Commitez votre modification avec git commit -m "<votre_message_de_commit>". Le message entre guillemets doubles décrira la nature de votre modification (généralement ≤ 65 caractères).
Je vais maintenant « committer » mes changements présents dans l’index pour qu’ils
représentent la dernière version du repo, la commande nous retourne une confirmation
avec le nombre de fichiers changés et le nombre de lignes éditées.
Exécutez à nouveau git status, pour vérifier que vos modifications ont bien été commités.
Pour vérifier que les changements ont bien été pris en compte, on utilise la commande git
status, on voit alors qu’il n’y a plus rien à commiter.
Essayez à présent la commande git log pour afficher la liste des changements effectués dans ce dépôt; combien y en a-t-il ? Quel est le numéro (un hash cryptographique en format SHA1) du dernier commit effectué ?
Pour afficher une liste des changements effectués sur ce repo, la commande git log, on voit
alors qu’il y a eu une modification et que l’ID du commit est :
097a8bb8712254e230a29877eb93c5c61e625e42
Créez quelques autres sandwiches hot_dog.txt, jambon_beurre.txt...et/ou modifiez les com
positions de sandwiches déjà créés, en commitant chaque modification séparément. Chaque commit doit
contenir
une et une seule création ou modification de fichier. Effectuez au moins 5 modifications différentes
(et donc 5
commits différents). À chaque étape essayez les commandes suivantes :
Note : la commande git commit <file> a le même effet que git add
<file> suivie de git commit.
Je vais ensuite créer 5 nouvelles compositions, en prenant soin de faire un commit
par changement. Voici un exemple pour le premier commit :
Regardez à nouveau l’historique des modifications avec git log et vérifiez avec git
status que vous avez tout commité. Git offre plusieurs interfaces, graphiques ou non, pour
afficher l’historique. Essayez les commandes suivantes (gitg et gitk ne sont pas forcément
installés) :
Pour vérifier que toutes mes nouvelles modifications ont bien été prises en compte
j’exécute la commande git status
Voici également un extrait des retours des commandes que j’ai pu exécuter :
Vous voulez changer d’avis entre les différents états de la Figure 1 ? Faites une modification d’un ou plusieurs sandwiches, ajoutez-la à l’index avec git add (vérifiez cet ajout avec git status), mais ne la commitez pas. Exécutez git reset sur le nom de fichier (ou les noms de fichiers) que vous avez préparés pour le commit; vérifiez avec git status le résultat.
J’ai donc modifié le fichier hot_dog.txt, ajouté les modifications à l’index, mais
ayant changé d’avis, je décide d’annuler les modifications avec git reset
hot_dog.txt, voici une capture de mon procédé :
Votre modification a été « retirée » de l’index. Vous pouvez maintenant la jeter à la poubelle
avec la commande git checkout sur le ou les noms des fichiers modifiés, qui récupère dans
l’historique leurs
versions correspondant au tout dernier commit. Essayez cette commande, et vérifiez avec git
status qu’il n’y
a maintenant plus aucune modification à commiter.
git checkout est une commande très puissante. Elle vous permet de voyager entre différentes
branches
(voir plus loin) et aussi de revenir temporairement à une version précédente de votre copie de
travail.
Après ceci, je vais donc « jeter à la poubelle » les modifications qui ont été
apportées au fichier. La commande git checkout hot_dog.txt a été utilisée pour
rétablir les changements à la dernière version en date de ce fichier.
Regardez l’historique de votre dépôt avec git log; choisissez dans la liste un commit (autre que
le dernier). Exécutez git checkout COMMITID où COMMITID est le numéro de commit que vous
avez
choisi. Vérifiez que l’état de vos sandwiches est maintenant revenu en arrière, au moment du commit
choisi. Que dit maintenant git status ?
git log n’affiche plus les commits postérieurs à l’état actuel, sauf si vous ajoutez
l’option --all.
Attention, avec git checkout les fichiers de votre copie de travail sont modifiés directement par
Git pour les remettre dans l’état que vous avez demandé. Si les fichiers modifiés sont ouverts par
d’autres programmes (e.g. un éditeur de texte comme Emacs), il faudra les réouvrir pour observer les
modifications.
Je vais, à l’aide de la commande git checkout <COMMITID> retourner à un état
précédent du repo, avant la création du dernier fichier (bagnat_thon.txt). Donc au
commit du fichier poulet_oeuf.txt. (J’ai exclu de la capture le git log pour plus de
clareté dans la console)
On voit donc que le fichier bagnat_thon.txt a disparu, mais aussi que la sortie du git
status a changé et nous dit que l’on s’est détaché de la dernière version et avec le
début du hash de ce commit.
Vous pouvez retourner à la version plus récente de votre dépôt avec git checkout master. Vérifiez que cela est bien le cas. Que dit maintenant git status ?
Pour retourner à la version la plus à jour de la branche principale, j’utilise la
commande git checkout master, cependant le nom de la branche par défaut a été
changé courant 2020 (une source ici) et est passée de " master " à
" main ". Donc la commande est git checkout main.
Après être retourné sur la dernière version du repo, on peut voir que le fichier
bagnat_thon.txt est revenu, et la commande git status nous informe que l’on se
trouve sur la branche main.