@@ -176,6 +176,20 @@ Les changements pris en compte sont déplacés par _git_ dans une zone nommée `
__N.B__. : On peut annuler la prise en compte des changements pour un fichier via la commande `git rm --cached` (de fait, le changement est rebasculé dans la zone `unstaged`)
La création d'une nouvelle version (commit) s'effectue via la commande `git commit` :
```
MacBook-Air-749:4git sebastienjean$ git commit -m "ajout d'un fichier"
[master (root-commit) 146f51a] ajout d'un fichier
1 file changed, 1 insertion(+)
create mode 100644 unFichier.txt
MacBook-Air-749:4git sebastienjean$
```
L'option `-m` permet ici de spécifier le message de commit. Celui-ci répond à la question _Pourquoi ?_ de la nouvelle version (les changements pris en compte répondent à la question _Comment ?_, la date d'exécution de la commande répond à la question _Quand ?_, les propriétés de la section `[user]` du fichier de confiuguration répondent quant à eux à la question _Qui ?_).
Le message de commit est constitué d'un résumé qui doit tenir sur une ligne et une description détaillée optionnelle, de longueur variable et séparée du résumé par une ligne vide. L'option `-m` permet d'indiquer rapidement et facilement un message sans description détaillée. De façon plus générale, sans l'option `-m`, l'exécution de la commande est déroutée vers un éditeur de texte qui permet d'indiquer un message adapté à la situation.
La situation résultante est illustrée ci-dessous :
...
...
@@ -185,4 +199,38 @@ 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 :
-`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)
L'exécution de la commande `git status` montre que l'état du `working tree` est en phase avec la version `HEAD` (_clean_).
```
MacBook-Air-749:4git sebastienjean$ git status
On branch master
nothing to commit, working tree clean
MacBook-Air-749:4git sebastienjean$
```
La commande `git log` permet de voir l'historique de façon exhaustive et d'y retrouver les pointeurs :
Author: Sebastien Jean <sebastien.jean@univ-grenoble-alpes.fr>
Date: Fri Dec 17 12:35:22 2021 +0100
ajout d'un fichier
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).
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 :