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:
git reset HEAD .
git stash
git checkout master
git fetch upstream; git merge upstream/master
git fetch upstream; git merge upstream/master
git checkout new-branch; git rebase master
git checkout new-branch; git rebase master
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.