Annuler la pop de stash git qui se traduit par un conflit de fusion

J’ai commencé à apporter des modifications à mon code, sans me rendre compte que j’étais sur une ancienne twig. Pour les transférer, je voulais les cacher puis les appliquer à une nouvelle twig de master. J’ai utilisé git stash pop pour transférer les modifications en cours sur cette nouvelle twig, en oubliant que je n’avais pas apporté de nouvelles modifications à master avant de créer la nouvelle twig. Cela a entraîné un tas de conflits de fusion et la perte d’une réserve nette de mes modifications (depuis que j’ai utilisé de la pop).

Une fois que je recrée correctement la nouvelle twig, comment puis-je récupérer mes modifications cachées pour les appliquer correctement?

En fait, Git est assez intelligent pour ne pas laisser tomber un cache s’il ne s’applique pas proprement. J’ai pu atteindre l’état souhaité en suivant les étapes suivantes:

  1. Pour dissocier les conflits de fusion: git reset HEAD .
  2. Pour enregistrer la fusion en conflit (juste au cas où): git stash
  3. Pour revenir à maître: git checkout master
  4. Pour tirer les dernières modifications: git fetch upstream; git merge upstream/master git fetch upstream; git merge upstream/master
  5. Corriger ma nouvelle twig: git checkout new-branch; git rebase master git checkout new-branch; git rebase master
  6. Pour appliquer les modifications masquées correctes (désormais 2ème sur la stack): git stash apply stash@{1}

Heureusement git stash pop ne change pas la cachette en cas de conflit!

Donc, ne vous inquiétez pas, nettoyez simplement votre code et réessayez.

Supposons que votre base de code était propre, vous pouvez revenir à cet état avec: git checkout -f
Ensuite, faites les choses que vous avez oubliées, par exemple, git merge missing-branch
Après cela, il ne vous git stash pop qu’à lancer git stash pop et vous obtenez la même réserve, qui était en conflit auparavant.

Attention: le cache est enregistré, cependant, les modifications non validées dans le répertoire de travail ne le sont pas. Ils peuvent être dérangés.