... | @@ -207,12 +207,15 @@ Le message de commit est constitué d'un **résumé** qui doit tenir **sur une l |
... | @@ -207,12 +207,15 @@ Le message de commit est constitué d'un **résumé** qui doit tenir **sur une l |
|
|
|
|
|
La situation résultante est illustrée ci-dessous :
|
|
La situation résultante est illustrée ci-dessous :
|
|
|
|
|
|

|
|

|
|
|
|
|
|
Les changements pris en compte (consignés en zone `staged`) forment une nouvelle version notée ici `0`. A l'historique sont associés 2 pointeurs :
|
|
Les changements pris en compte (consignés en zone `staged`) forment une nouvelle version notée ici `0`.
|
|
|
|
|
|
|
|
A l'historique sont associés 2 pointeurs :
|
|
|
|
|
|
- `Master`, qui désigne le dernier commit (la version la plus récente) de la branche (il se déplace d'un cran vers la droite à chaque commit, et est forcément toujours à droite)
|
|
- `Master`, qui désigne le dernier commit (la version la plus récente) de la branche (il se déplace d'un cran vers la droite à chaque commit, et est forcément toujours à droite)
|
|
- `HEAD`, qui désigne le commit sur lequel est basé la reconstruction du _Working Tree_ (il suit généralement le pointeur `Master` mais il est possible de le déplacer explicitement sur n'importe quelle version antérieure pour reconstituer l'état du _Working Tree_ dans cette version)
|
|
- `HEAD`, qui désigne le commit sur lequel est basé la reconstruction du _Working Tree_
|
|
|
|
* :eyes: il suit généralement le pointeur `Master` mais il est possible de le déplacer explicitement sur n'importe quelle version antérieure pour reconstituer l'état du _Working Tree_ dans cette version
|
|
|
|
|
|
L'exécution de la commande `git status` montre que l'état du `Working Tree` est en phase avec la version `HEAD` (_clean_).
|
|
L'exécution de la commande `git status` montre que l'état du `Working Tree` est en phase avec la version `HEAD` (_clean_).
|
|
|
|
|
... | @@ -239,7 +242,7 @@ Date: Fri Dec 17 12:35:22 2021 +0100 |
... | @@ -239,7 +242,7 @@ Date: Fri Dec 17 12:35:22 2021 +0100 |
|
MacBook-Air-749:4git sebastienjean$
|
|
MacBook-Air-749:4git sebastienjean$
|
|
```
|
|
```
|
|
|
|
|
|
Les commits ont un identifiant unique (_hash_ sur 20 octets, 40 digits hexadécimaux) qui permet de les désigner dans quelques commandes (il est possible d'utiliser seulement les 7 premiers digits hexadécimaux).
|
|
> :eyes:Les commits ont un **identifiant unique** (_hash_ sur 20 octets, 40 digits hexadécimaux) qui permet de les désigner dans quelques commandes (il est possible d'utiliser seulement les 7 premiers digits hexadécimaux).
|
|
|
|
|
|
La commande `git log` propose une sortie formattée via l'option `--pretty` (cf documentation), par exemple pour n'afficher que le _hash_ abbrévié et le résumé du message :
|
|
La commande `git log` propose une sortie formattée via l'option `--pretty` (cf documentation), par exemple pour n'afficher que le _hash_ abbrévié et le résumé du message :
|
|
|
|
|
... | @@ -302,9 +305,13 @@ MacBook-Air-749:4git sebastienjean$ git commit -a -m "modification du fichier" |
... | @@ -302,9 +305,13 @@ MacBook-Air-749:4git sebastienjean$ git commit -a -m "modification du fichier" |
|
MacBook-Air-749:4git sebastienjean$
|
|
MacBook-Air-749:4git sebastienjean$
|
|
```
|
|
```
|
|
|
|
|
|
**N.B.** : ici, le fichier est déjà connu. L'option `-a` permet d'éviter l'appel à `git add` et inclus à la nouvelle version l'intégralité du contenu de la zone _unstaged_.
|
|
> :eyes: ici, le fichier est déjà connu.
|
|
|
|
|
|
|
|
> :information_source:️ L'option `-a` permet d'éviter l'appel à `git add` et inclut à la nouvelle version **l'intégralité** du contenu de la zone _unstaged_.
|
|
|
|
|
|
Il y a donc maintenant 2 versions :
|
|
Il y a donc maintenant **2** versions, comme présenté ci-dessous, et attesté par `git log` :
|
|
|
|
|
|
|
|

|
|
|
|
|
|
```
|
|
```
|
|
MacBook-Air-749:4git sebastienjean$ git log --pretty="format:%h %s"
|
|
MacBook-Air-749:4git sebastienjean$ git log --pretty="format:%h %s"
|
... | @@ -337,7 +344,7 @@ index ee051bd..53c5f7f 100644 |
... | @@ -337,7 +344,7 @@ index ee051bd..53c5f7f 100644 |
|
MacBook-Air-749:4git sebastienjean$
|
|
MacBook-Air-749:4git sebastienjean$
|
|
```
|
|
```
|
|
|
|
|
|
- `HEAD` Vs `HEAD\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\~1` (la version parente de `HEAD`) :
|
|
- `HEAD` Vs `HEAD\~1` (la version parente de `HEAD`) :
|
|
|
|
|
|
```diff
|
|
```diff
|
|
MacBook-Air-749:4git sebastienjean$ git diff HEAD~1 HEAD unFichier.txt
|
|
MacBook-Air-749:4git sebastienjean$ git diff HEAD~1 HEAD unFichier.txt
|
... | @@ -350,7 +357,7 @@ index 927b61b..ee051bd 100644 |
... | @@ -350,7 +357,7 @@ index 927b61b..ee051bd 100644 |
|
+Une autre ligne de texte
|
|
+Une autre ligne de texte
|
|
```
|
|
```
|
|
|
|
|
|
- _Working Tree_ Vs `HEAD\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\~1` :
|
|
- _Working Tree_ Vs `HEAD\~1` :
|
|
|
|
|
|
```diff
|
|
```diff
|
|
MacBook-Air-749:4git sebastienjean$ git diff HEAD~1 unFichier.txt
|
|
MacBook-Air-749:4git sebastienjean$ git diff HEAD~1 unFichier.txt
|
... | @@ -363,7 +370,7 @@ index 927b61b..53c5f7f 100644 |
... | @@ -363,7 +370,7 @@ index 927b61b..53c5f7f 100644 |
|
+Encore une autre ligne de texte
|
|
+Encore une autre ligne de texte
|
|
```
|
|
```
|
|
|
|
|
|
**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).
|
|
> :information_source:️ 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
|
|
### Restauration de versions
|
|
|
|
|
... | @@ -400,7 +407,9 @@ e08fe66 modification du fichier |
... | @@ -400,7 +407,9 @@ e08fe66 modification du fichier |
|
|
|
|
|
### Inversion de modifications
|
|
### Inversion de modifications
|
|
|
|
|
|
La commande [`git revert`](https://git-scm.com/docs/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).
|
|
La commande [`git revert`](https://git-scm.com/docs/git-revert) permet d'annuler les modifications d'un commit antérieur.
|
|
|
|
|
|
|
|
> :information_source:️ Le commit à annuler n'est 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 :
|
|
On visualise les modifications entre les 2 dernières versions :
|
|
|
|
|
... | | ... | |