Outils pour utilisateurs

Outils du site


dev:git:cas-pratiques:deplacer-modif-vers-nouvelle-branche

:TODO_DOCUPDATE:

Déplacer les modifications vers une nouvelle branche

Une bonne pratique consiste à ne pas apporter directement des modifications sur la branche master/main. En général:

  • On crée une branche de développement dédiée à la fonctionnalité ;
  • On commit de façon atomique jusqu'a obtenir un résultat stable/fonctionnel ;
  • Une fois la fonctionnalité mise en œuvre, testée et stable, on fusionne sur la branche master.

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

Si des fichiers ont été placés dans l'index, il faudra les retirer de l'index avec la commande git reset.
# 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
dev/git/cas-pratiques/deplacer-modif-vers-nouvelle-branche.txt · Dernière modification : 2023/09/20 10:02 de yoann