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 commitbbd7c93
. 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 utilisergit switch -
.