J'ai donc eu beaucoup de changements et quelques fichiers non suivis. J'avais besoin de modifier quelque chose, alors j'ai utilisé git stash -u
, a modifié quelques éléments, a validé ces changements, les a poussés, puis a essayé de git stash pop
.
Parce que j'avais modifié quelques fichiers que j'avais cachés, j'ai reçu le message suivant:
error: Your local changes to the following files would be overwritten by merge:
file_1.py
file_2.py
Please, commit your changes or stash them before you can merge.
Aborting
Cela semble étrange, j'avais commis toutes les nouvelles modifications, ma caisse était propre lorsque j'ai exécuté la commande.
Il semble que le git stash pop
opération un-stashed la moitié de mes modifications et les fichiers non suivis, mais si j'essaie et git stash pop
encore une fois, je reçois une sortie comme:
some_file.html already exists, no checkout
some_other_file.html already exists, no checkout
yet_another_file.html already exists, no checkout
Could not restore untracked files from stash
git stash show
affiche toujours une liste de mes modifications cachées, mais je ne sais pas ce que je fais maintenant.
Comment puis-je me décoller?
J'ai contourné cela, je pense que cela devait être une sorte de bogue, car mon répertoire de travail était propre et à jour.
Iran git checkout .
et après ça git stash apply
a bien fonctionné, j'ai tout récupéré sans aucun problème. Je serais intéressé de découvrir ce qui a réellement provoqué son échec.
Pour ceux qui ( ont un travail non engagé et veulent faire apparaître leur cachette sans perdre ce travail, voici un moyen (avec merci à @iFreilicht):
Modifiez temporairement les modifications non validées:
git add -u .
Maintenant, vous pouvez appliquer votre cachette sans se plaindre (espérons-le):
git stash pop
Maintenant décompressez tout, mais laissez les fichiers tels quels:
git reset
La cachette créée avec -u
doit nettoyer les fichiers non suivis avant d'être apply
- éd (et pop
est juste apply
+ drop
).
Par paranoïa générale, je ferais mv
les fichiers non suivis dans un endroit sûr, puis git stash apply
, vérifiez tout soigneusement et git stash drop
une fois que je suis sûr que tout est correct. :-)