Une bonne pratique consiste à ne pas apporter directement des modifications sur la branche master/main. En général:
Par erreur/inattention on modifie parfois les fichiers du working directory alors que l'on se trouve encore sur master. A ce moment je n'ai pas fait de commit, je souhaite alors annuler mes modifications, basculer sur une branche de travail et refaire les modifications sur cette branche.
# git branch m'indique que je suis bien sur master $ git branch experimental * master # git status confirme que le fichier cdc.adoc a été modifié $ git status -s M doc/cdc.adoc
Pour éviter d'avoir à annuler et recréer mes modifications je peux utiliser git stash
# Les modification sont sauvegardées dans une branche temporaire $ git stash save Saved working directory and index state WIP on master: 53accfe Intégration de la bibliothèque ncurses HEAD est maintenant à 53accfe Intégration de la bibliothèque ncurses # git stash list pour afficher les sauvegardes existantes $ git stash list stash@{0}: WIP on master: 53accfe Intégration de la bibliothèque ncurses # On se positionne sur une nouvelle branche de travail $ git checkout -b menu # On applique le patch sur la branche de travail (applique le dernier stash) $ git stash apply
Les modifications sont placées sur notre branche de travail, on peut continuer à travailler normalement et faire les commits sur la branche de travail, master reste propre.
Enfin on peut supprimer le stash puisqu'il a été appliqué:
$ git stash clear