Installation
Travailler avec git
Logiciels
Source Tree
19 min
Ungit
09 min
Github Mac
08 min
GitKraken
13 min

Ecrire l'histoire c'est bien, revenir dans le temps c'est mieux ! Le gros intérêt du versioning c'est qu'il va nous permettre de revenir en arrière en cas de problème. Pour cela on a plusieurs possibilités.

checkout

La commande checkout permet de faire plusieurs choses

  • Passer de branche en branche (on en parlera dans un prochain chapitre
  • Revenir sur un fichier par rapport à un commit
  • Revenir sur un commit

    git checkout

Permet de transformer le <fichier> tel qu'il était lors du <commit> et l'ajoute au staging.

git checkout <commit>

Transforme tous les fichiers pour reproduire l'état du <commit>. Cette commande nous place dans un état particulier appellé detached HEAD. En résumé vous êtes revenu en arrière en tant que spectateur. Vous pouvez voir le projet tel qu'il était au moment du commit tout en ayant la possibilité de revenir dans le "présent". On utilisera cette commande pour observer des vieux commit, si on souhaite réellement revenir en arrière on utilisera plutôt la commande reset.

revert

Revert permet d'inverser un commit.

git revert <commit>

Cette commande va défaire ce qui avait été fait au moment du <commit> en créant un nouveau commit. Cela n'altère pas l'historique mais va ajouter un nouveau commit d'inversion (les lignes ajoutées seront supprimées, les fichiers supprimés seront recréés...).

reset

Tout comme la commande checkout, la commande reset permet de faire plusieurs choses à la fois. En revanche il faudra faire très attention lors de l'utilisation de cette commande car elle altère l'historique et peut dans certains cas supprimer vos modifications (si vous voyez --hard, vérifiez 6 fois ce que vous voulez faire).

git reset <fichier>

Supprime un fichier de la zone de staging, mais ne supprime pas les modifications qui sont faites

git reset

Supprime tous les fichiers de la zone de staging, sans supprimer les modifications.

git reset --hard

Cette commande est à utiliser avec extrème précaution, elle renvoit le dossier de travail au niveau du dernier commit. Toutes les modifications non commit seront perdues.

git reset <commit> 

Permet de revenir en arrière jusqu'au <commit>, réinitialise la zone de staging tout en laissant votre dossier de travail en l'état. L'historique sera perdu (les commits suivant <commit> seront perdus, mais pas vos modifications). Cette commande vous permet surtout de nettoyer l'historique en resoumettant un commit unique à la place de commit trop éparses.

git reset <commit> --hard

Permet de revenir au <commit> et réinitialise la zone de staging et le dossier de travail pour correspondre. Toutes les modifications, ainsi que tous les commits fait après le <commit> seront supprimés. A utiliser avec une extrême précaution !

La commande reset ne devra jamais être utilisé après avoir publié (push) vos modifications. En revanche, elle peut être utile pour nettoyer votre historique local avant de l'envoyer en ligne.