Formation PUB600 : Gestion des versions avec Git, 2019 Travailler avec Git

1.6 Soumettre une révision dans le dépôt Git (avec registre des modifications)


Lorsqu'un développeur termine son travail sur une fonctionnalité quelconque ou lorsqu'il termine la correction d'un bogue, il doit créer une révision. Ceci signifie qu'il indiquera à Git qu'il a terminé son travail sur une liste de fichiers puis qu'il les soumettra dans le dépôt Git.

Le travail de gestion des versions sera toujours effectué localement dans un premier temps. Ce n'est qu'à la fin des étapes locales qu'il sera possible, si désiré, d'envoyer des révisions vers un serveur distant.

Concentrons-nous donc sur le travail local.

Les 3 zones de Git

Le fonctionnement de Git peut être vulgarisé en représentant trois zones1 :

  • Le répertoire de travail (working directory), qui contient physiquement les fichiers de l'application;
  • L'index (staging area) qui est un espace temporaire dans lequel Git maintient la liste des fichiers suivis;
  • Le dépôt (repository) qui contient une copie des fichiers (compilés dans une base de données) et un registre de chacune des révisions.

Les zones de Git

Lister les modifications suivies ou non suivies

Avant de plonger plus en profondeur dans Git, il est important de faire connaissance avec quelques commandes qui nous aideront à connaître les fichiers et leur état aux yeux de Git.

Rappel : selon vos configurations, la console Git peut être une fenêtre Git Bash, une fenêtre Terminal ou encore une fenêtre Vagrant SSH.

Pour connaître les modifications depuis la dernière soumission à Git :

Console Git

Dans le résultat affiché par git status, les fichiers ajoutés, modifiés ou supprimés qui ne font pas partie de l'index apparaissent en rouge. Ceux qui sont déjà ajoutés à l'index sont en vert.

Il est possible de configurer Git pour que le résultat n'apparaisse qu'une page à la fois. Une fois la première page affichée, il faudra appuyer sur Entrée pour faire défiler les autres fichiers.

Console Git

git config --global pager.status true

Une autre commande utile pour connaître l'état des différents fichiers :

Console Git

Sans arguments, cette commande liste tous les fichiers suivis par Git.

En lui passant différents paramètres, il est possible de connaître à peu près tout ce qu'on désire savoir.

Pour quelques exemples pratiques : https://gist.github.com/mkhairi/405c4afa2fedb7328695a7a73ef49074

Étapes pour passer d'une zone à l'autre

Le processus de soumission d'une révision se déroule en trois étapes :

  • D'abord, le fichier est simplement dans le répertoire de travail. Git ne sait pas qu'il existe.
  • Ensuite, on ajoute le fichier à l'index à l'aide de la commande git add pour indiquer à Git qu'il doit le suivre.
  • Finalement, on soumet le ou les fichiers dans le dépôt Git à l'aide de la commande git commit. Ceci crée une révision.

Les commandes pour passer à la prochaine zones de Git

Exclure des fichiers de la gestion des versions

Le fichier .gitignore permet de lister les fichiers qui ne doivent jamais être suivis.

Ce sera le cas par exemple :

  • des fichiers compilés (exécutables, dll, bases de données)
  • des images et autres fichiers médias
  • des fichiers contenant des données sensibles, par exemple des informations de connexion
  • Certaines équipes de développement choisissent également de ne pas suivre les bibliothèques externes.

En temps normal, seuls les fichiers texte seront soumis à Git.

Le fichier .gitignore sera placé à la racine du dossier de votre application (et non dans le dossier .git).

Dans l'exemple suivant, les fichiers contenus dans les dossiers vendor et public/images de même que le fichier .env ne feront jamais partie de l'index, même s'ils étaient modifiés.

Fichier .gitignore

/vendor

/public/images

.env

Si vous ajoutez un fichier ou un dossier à .gitignore après qu'il ait été marqué parmi les fichiers suivis par Git, la commande git status continuera de le montrer.

Pour régler ce problème :

Console Git

git rm --cached -r nomFichierOuDossier

Index : création de la liste des fichiers suivis (git add)

Pour ajouter un fichier dans l'index, vous devez utiliser la commande git add.

Puisqu'une révision ne doit être composée que des fichiers propres à cette révision, on doit commencer par lister tous les fichiers qui ont été ajoutés, modifiés ou supprimés du répertoire de travail depuis la dernière révision.

Console Git

git status

Si tous les fichiers en rouge (ce sont ceux qui ne font pas partie de l'index) doivent faire partie de la révision, il est possible d'ajouter l'ensemble des ces fichiers en utilisant l'option -A ou --all. Les fichiers listés dans .gitignore ne seront pas ajoutés.

Console Git

git add --all

Si le dossier courant est la racine du projet, on obtiendra le même résultat avec git add .. Ceci indiquera à Git qu'il doit faire un suivi de tous les fichiers du dossier courant.

Console Git

Dans le cas où certains des fichiers ajoutés ou modifiés ne sont pas en lien avec le travail en cours, il est possible d'ajouter les fichiers à l'index un à un.

Console Git

git add app/Http/Controllers/ProduitsController.php

On peut également ajouter un dossier entier.

Console Git

git add app/fonctions/

Si un fichier a été ajouté à l'index par erreur, on peut le retirer.

Console Git

git reset chemin/UnFichier.txt

Une fois que des fichiers ont été ajoutés à l'index, la commande git status listera les fichiers faisant partie de la révision. Vous verrez donc, en vert, la liste des fichiers, parmi les fichiers suivis, qui ont été modifiés depuis la dernière soumission au serveur Git. Si certains des fichiers modifiés ne sont pas suivis, il apparaîtront en rouge.

Dépôt : soumission d'une révision (git commit)

Quand la liste des fichiers suivis est complète, vous pouvez soumettre la révision à Git à l'aide de la commande git commit. Vous indiquerez par la même occasion une description à accoler à l'envoi (ex : Ajouté fonctionnalité X, Corrigé bogue Y, Ajouté en-têtes standards).

Par convention, cette description débutera par une majuscule et ne comportera pas de point terminal. Elle est limitée à 49 caractères.

Cette description est importante : c'est elle qui permettra de retrouver l'état de l'application à un moment précis.

Console Git

git commit -m 'Une description'

Notez qu'après un git commit, les fichiers seront automatiquement retirés de l'index puisqu'ils font maintenant partie du dépôt.

Registre des modifications

Il est possible de noter dans un fichier texte, que l'on appellera registre des modifications, les détails des modifications apportées. Un endroit approprié pour ce fichier est le dossier dev, que plusieurs développeurs utilisent pour stocker les fichiers de développement qui ne font pas partie de la solution finale. Dans ce dossier, on créera un sous-dossier revisions.

La première ligne de ce fichier texte sera la description, limitée à 49 caractères.

Les lignes suivantes peuvent être aussi longues que désiré.

Fichier dont le nom est au format aaaa-mm-jj.txt (registre des modifications)

Couleur boutons-Renvoi ancre-Rôle proprio

 

Ajusté couleurs boutons dans tableau des tests.
Renvoi à une ancre vers la bonne section après ajout ou modif. cas d'essai.
Dans liste des tests, ajouté rôle 5 = propriétaire.

On utilisera alors l'option -F pour indiquer à Git que les détails de la révision se trouvent dans un fichier.

Console Git

git commit -F dev/revisions/aaaa-mm-jj.txt

Vérification de la soumission

Une fois la soumission complétée, vous devez vérifier si elle a effectivement été réalisée.

Pour visualiser la liste des révisions soumises à Git, incluant la description qui accompagne chaque révision :

Console Git

Pour sortir de cette commande, appuyez sur Ctrl + z.

Il est possible de lister les détails de la dernière révision. On y verra alors la liste des fichiers modifiés avec, pour chacun, le nombre de lignes ajoutées et le nombre de lignes supprimées :

Console Git

git log -1 --stat

Et pour s'assurer qu'il n'y a plus de différences entre le répertoire de travail et la dernière révision soumise à Git :

Console Git

git diff HEAD

Si les modifications ont bien été soumises et que tous les fichiers modifiés faisaient partie de la révision, la commande git diff HEAD ne produira aucune sortie, ce qui signifie que le répertoire de travail et la dernière révision sont identiques.

Défaire une soumission

Vous venez de faire un git commit et vous désirez revenir en arrière? Ceci est possible tant que vous n'avez pas fait de git push pour copier vos révisions sur un serveur Git distant.

La commande suivante permet de prendre les fichiers qui ont été ajoutés au dépôt lors du dernier commit et de les ramener dans l'index.

L'argument HEAD~1 indique que vous désirez travailler avec la soumission juste avant le HEAD donc la dernière soumission.

Console Git

À partir de ce moment, vous pouvez ajouter des fichiers à l'index ou en retirer puis refaire le git commit pour créer une nouvelle soumission.

Source

1. Dauzon, Samuel (2016). « Git - Maîtrisez la gestion de vos versions ». Saint-Herblain : Editions ENI.

Pour plus d'information

« Getting Started - About Version Control ». Git --fast-version-control. https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control

« Git Reference ». Git --fast-version-control. https://git-scm.com/docs/

« Basic Git commands ». Atlassian Documentation. https://confluence.atlassian.com/bitbucketserver/basic-git-commands-776639767.html

« Most commonly used git tips and tricks. ». GitHub. https://github.com/git-tips/tips

« Start using Git on the command line ». GitLab. https://docs.gitlab.com/ee/gitlab-basics/start-using-git.html

« Super Userful Need To Know Git Commands ». Zack Perdue. http://zackperdue.com/tutorials/super-useful-need-to-know-git-commands

« Pro Git ». APress. https://progit2.s3.amazonaws.com/en/2016-03-22-f3531/progit-en.1084.pdf

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre