J'ai commencé à apporter des modifications à ma base de code, ne réalisant pas que j'étais sur une ancienne branche de sujet. Pour les transférer, je voulais les ranger puis les appliquer à une nouvelle branche hors master. J'avais l'habitude git stash pop
de transférer des modifications en cours vers cette nouvelle branche, oubliant que je n'avais pas apporté de nouvelles modifications dans master avant de créer la nouvelle branche. Cela a entraîné un tas de conflits de fusion et la perte d'une cachette propre de mes modifications (depuis que j'ai utilisé pop).
Une fois que j'ai recréé la nouvelle branche correctement, comment puis-je récupérer mes modifications cachées pour les appliquer correctement?
git stash drop
comme dernière étape pour se débarrasser de la cachette indésirable de # 2.git stash pop
: "L'application de l'état peut échouer avec des conflits; dans ce cas, il n'est pas supprimé de la liste de dissimulation. Vous devez résoudre les conflits à la main et appelergit stash drop
manuellement par la suite." ( git-scm.com/docs/git-stash )Heureusement
git stash pop
cela 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 avant, vous pouvez revenir à cet état avec:
git checkout -f
Ensuite, faites ce que vous avez oublié, par exemple
git merge missing-branch
après avoir simplement déclenché
git stash pop
, tirez à nouveau et vous obtenez la même cachette, qui était en conflit auparavant.Attention: La cachette est sûre, cependant, les modifications non validées dans le répertoire de travail ne le sont pas. Ils peuvent se gâcher.
la source
git stash pop
tenté de fusionner automatiquement, en conflit et l' ai conservé.git stash pop
aussi souvent que nécessaire jusqu'à la fin sans conflit. Donc, après votre conflit, oui, le répertoire de travail est en désordre, cependant, vous pouvez le nettoyer et appeler àgit stash pop
nouveau.git checkout -f
:!Les instructions sont un peu compliquées, je vais donc proposer quelque chose de plus simple:
git reset HEAD --hard
Abandonner toutes les modifications apportées à la branche actuelle...
Effectuer des travaux intermédiaires si nécessairegit stash pop
Re-pop la cachette à une date ultérieure lorsque vous êtes prêtla source
doit fonctionner, si votre état précédent est propre.
la source