... | ... | @@ -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 :
|
|
|
|
|
|
```
|
|
|
MacBook-Air-749:4git sebastienjean$ git log
|
|
|
commit 146f51a7fae3305a91a55576b6aa1f57b73dc76a (HEAD -> master)
|
|
|
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 :
|
|
|
|
|
|
```
|
|
|
MacBook-Air-749:4git sebastienjean$ git log --pretty="format:%h %s"
|
|
|
146f51a ajout d'un fichier
|
|
|
MacBook-Air-749:4git sebastienjean$
|
|
|
``` |