Dans la partie précédente, nous avons découvert quelques commandes Git nous permettant de modifier des fichiers et d’enregistrer des modifications dans notre dépôt Git.
Dans cette nouvelle leçon, nous allons apprendre à consulter l’historique des commits réalisés, à remplacer un ancien commit et allons voir comment annuler des modifications apportées à un fichier, c’est-à-dire comment restaurer une version précédente d’un fichier.
Consulter l’historique des modifications Git
La manière la plus simple de consulter l’historique des modifications Git est d’utiliser la commande git log
. Cette commande affiche la liste des commits réalisés du plus récent au plus ancien. Par défaut, chaque commit est affiché avec sa somme de contrôle SHA-1, le nom et l’e-mail de l’auteur, la date et le message du commit.
La commande git log
supporte également de nombreuses options. Certaines vont pouvoir être très utiles comme par exemple les options -p
, --pretty
, --since
ou --author
.
Utiliser git log -p
permet d’afficher explicitement les différences introduites entre chaque validation.
L’option --pretty
permet, avec sa valeur oneline
, d’afficher chaque commit sur une seule ligne ce qui peut faciliter la lecture dans le cas où de nombreux commits ont été réalisés.
L’option --since
permet de n’afficher que les modifications depuis une certaine date (on peut lui fournir différents formats de date comme 2.weeks
ou 2019-10-10
par exemple).
L’option --author
permet de n’afficher que les commits d’un auteur en particulier.
Ecraser et remplacer un commit
Parfois, on voudra annuler une validation (un commit), notamment lorsque la validation a été faite en oubliant des fichiers ou sur les mauvaises versions de fichiers.
La façon la plus simple d’écraser un commit est d’utiliser la commande git commit
avec l’option --amend
. Cela va pousser un nouveau commit qui va remplacer le précédent en l’écrasant.
Par exemple, dans notre projet, on peut imaginer qu’on souhaite commit les changements effectués dans la leçon précédente sur le fichier README.txt et qu’on souhaite également réintégrer le fichier fichier2.txt dans l’index.
Pour cela, on effectue un git commit
:
Ici, on s’aperçoit après coup qu’on a oublié de réintégrer le fichier fichier2.txt à l’index. On peut utiliser une commande git add
puis git commit --amend
pour remplacer le commit précédent :
Note : L’éditeur par défaut va s’ouvrir pour vous permettre de modifier le message du commit si vous le souhaitez.
Annuler des modifications apportées à un fichier
L’un des principaux intérêts d’utiliser un logiciel de gestion de vision est de pouvoir “roll back”, c’est-à-dire de pouvoir revenir à un état antérieur enregistré d’un projet.
Après un commit, on va continuer à travailler sur nos fichiers et à les modifier. Parfois, certaines modifications ne vont pas apporter les comportements espérés et on voudra revenir à l’état du fichier du dernier instantané Git (c’est-à-dire au dernier état enregistré). On va pouvoir faire cela avec la commande générale git checkout -- nom-du-fichier
ou la nouvelle commande spécialisée git restore
.
Imaginons qu’on modifie le texte de notre fichier LISEZMOI.txt avec une commande echo
et >>
.
On se rend ensuite compte que ce texte ne convient pas et on souhaite revenir à l’état du fichier tel qu’il a été enregistré pour la dernière fois dans Git. Pour cela, on utilise simplement git restore LISEZMOI.txt
.