... | ... | @@ -355,6 +355,97 @@ index 927b61b..53c5f7f 100644 |
|
|
|
|
|
__N.B.__ : On peut aussi utiliser en paramètre les _hash_ des commits (abbréviés ou non) mais il est parfois plus simple de se répérer par rapport à `HEAD` (`~1` pour le commit parent, `~2` pour le commit grand-parent, ...) ou même par rapport à `Master` (de la même manière)
|
|
|
|
|
|
### Restauration de versions
|
|
|
|
|
|
la commande `git checkout` permet de déplacer le curseur `HEAD`sur une version antérieure. Mais son utilisation pour restaurer tout ou partie de la version en question nécessite de manipuler des branches (ce n'est pas l'objet de ce guide).
|
|
|
|
|
|
Néanmoins, si on lui indique en paramètre un fichier ou un répertoire, elle remplace le fichier ou le répertoire du _working tree_ avec une version antérieure sans déplacer `HEAD`.
|
|
|
|
|
|
Par exemple, pour restaurer la première version de `unFichier.txt`, il suffit d'exécuter la commande suivante :
|
|
|
|
|
|
```
|
|
|
git checkout HEAD~1 unFichier.txt
|
|
|
Updated 1 path from 300cbfc
|
|
|
MacBook-Air-749:4git sebastienjean$ more unFichier.txt
|
|
|
Une ligne de texte
|
|
|
```
|
|
|
|
|
|
La commande `git status` nous indique que des modifications existent encore par rapport à `HEAD` , on décide de les valider :
|
|
|
|
|
|
```
|
|
|
MacBook-Air-749:4git sebastienjean$ git status
|
|
|
On branch master
|
|
|
Changes to be committed:
|
|
|
(use "git restore --staged <file>..." to unstage)
|
|
|
modified: unFichier.txt
|
|
|
|
|
|
MacBook-Air-749:4git sebastienjean$ git commit -a -m "restauration de la permière version"
|
|
|
[master 16f173b] restauration de la première version
|
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
MacBook-Air-749:4git sebastienjean$ git log --pretty="format:%h %s"
|
|
|
16f173b restauration de la première version
|
|
|
e08fe66 modification du fichier
|
|
|
146f51a ajout d'un fichier
|
|
|
```
|
|
|
|
|
|
### Inversion de modifications
|
|
|
|
|
|
La commande `git revert`permet d'annuler les modifications d'un commit antérieur (pas forcément le précédent, mais dans ce cas ce n'est possible automatiquement que si aucun des commits suivants n'est en conflit de modification avec celui-ci)
|
|
|
|
|
|
On visualise les modifications entre les 2 dernières versions :
|
|
|
|
|
|
```diff
|
|
|
MacBook-Air-749:4git sebastienjean$ git diff HEAD~1 HEAD unFichier.txt
|
|
|
diff --git a/unFichier.txt b/unFichier.txt
|
|
|
index ee051bd..927b61b 100644
|
|
|
--- a/unFichier.txt
|
|
|
+++ b/unFichier.txt
|
|
|
@@ -1 +1 @@
|
|
|
-Une autre ligne de texte
|
|
|
+Une ligne de texte
|
|
|
MacBook-Air-749:4git sebastienjean$
|
|
|
```
|
|
|
|
|
|
On décide de les défaire (l'exécution est déroutée vers un éditeur de texte pour renseigner le message de commit) :
|
|
|
|
|
|
```
|
|
|
MacBook-Air-749:4git sebastienjean$ git revert HEAD
|
|
|
[master 268a278] Revert "restauration de la première version"
|
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
MacBook-Air-749:4git sebastienjean$
|
|
|
```
|
|
|
|
|
|
On observe que l'historique contient toujours toutes les versions :
|
|
|
|
|
|
```
|
|
|
MacBook-Air-749:4git sebastienjean$ git log --pretty="format:%h %s"
|
|
|
268a278 Revert "restauration de la première version"
|
|
|
16f173b restauration de la première version
|
|
|
e08fe66 modification du fichier
|
|
|
146f51a ajout d'un fichier
|
|
|
MacBook-Air-749:4git sebastienjean$
|
|
|
```
|
|
|
|
|
|
On visualise les modifications entre les 2 dernières versions, et on observe qu'elles sont bien l'inverse des précédentes :
|
|
|
|
|
|
```diff
|
|
|
MacBook-Air-749:4git sebastienjean$ git diff HEAD~1 HEAD unFichier.txt
|
|
|
diff --git a/unFichier.txt b/unFichier.txt
|
|
|
index 927b61b..ee051bd 100644
|
|
|
--- a/unFichier.txt
|
|
|
+++ b/unFichier.txt
|
|
|
@@ -1 +1 @@
|
|
|
-Une ligne de texte
|
|
|
+Une autre ligne de texte
|
|
|
MacBook-Air-749:4git sebastienjean$
|
|
|
```
|
|
|
|
|
|
On visualise les modifications entre la dernière version et son grand-parent, et on observe qu'elles sont bien nulles (on a rétablit le même contenu du _working tree` :
|
|
|
|
|
|
```diff
|
|
|
MacBook-Air-749:4git sebastienjean$ git diff HEAD~2 HEAD unFichier.txt
|
|
|
MacBook-Air-749:4git sebastienjean$
|
|
|
```
|
|
|
|
|
|
|
|
|
|
... | ... | |