Annuler des actions et consulter l’historique des modifications Git

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.

commande git log

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.

commande git log avec option p

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.

commande git log avec option pretty

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 :

exemple pour git commit --amend

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 :

commande git commit --amend

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 >>.

exemple pour commande git restore

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.

commande git commit restore

Laisser un commentaire

© Pierre Giraud - Toute reproduction interdite - Mentions légales