21/04/2021

0. Rétablir un fichier - checkout

Lu 172 fois Licence Creative Commons

Rétablir l'état d'un fichier avant modification

Durant le développement, il peut arriver de faire de multiples essais et donc de modifier de nombreux fichiers jusqu'à trouver la meilleure solution.
Une fois cette solution ajoutée au staging, on peut faire revenir les autres fichiers modifiés dans leur état initial (tels qu'ils étaient au dernier commit) avec la commande checkout:

git checkout README.md
[output]Updated 1 path from the index
git checkout .
[output]Updated 2 paths from the index

La 1e commande rétablit l'état d'un seul fichier, la seconde rétablit tous les fichiers qui n'ont pas été ajoutés au staging.


Tête détachée

La commande checkout permet également de restorer le projet à un état antérieur. On parle alors de detached HEAD ("tête détachée") ou detached mode.

Historique en mode normal


HEAD pointe normalement vers le dernier commit.


Exemple: retourner 2 commits en arrière.

git checkout bbd7c93
[output]Note: switching to 'bbd7c93'.
[output]
[output]You are in 'detached HEAD' state. You can look around, make experimental
[output]...
[output]
[output]HEAD is now at bbd7c93 Ajoute une documentation sur le staging
Historique en mode détaché: detached HEAD


En detached HEAD, HEAD pointe spécifiquement vers le commit bbd7c93. Les commits suivants n'apparaissent pas dans l'historique.


L'intérêt de ce mode est principalement de tester le projet dans un état antérieur, ou d'apporter des modifications depuis un commit particulier.
Mais il arrive de se retrouver en detached HEAD involontairement. Si c'est le cas, pour ré-attacher la tête, réutiliser la commande checkout en passant le nom de la branche actuelle (voir chapitre sur les branches):

git checkout master 
[output]Previous HEAD position was bbd7c93 Ajoute une documentation sur le staging
[output]Switched to branch 'master'

Note: Par défaut, la branche utilisée est master.
Alternativement, dans les dernières versions de Git, vous pouvez utiliser git switch -.