Git stash semble faire beaucoup de ce que je veux, sauf qu'il est un peu difficile à scripter, car si vous n'avez pas de changements, il git stash; git stash pop
fera quelque chose de différent que si vous avez des changements dans votre référentiel.
Il semble que git stash create
c'est la réponse à ce problème, et tout fonctionne, sauf une chose… Je ne peux pas me débarrasser de la cachette créée. Existe-t-il un moyen de se débarrasser de la cachette?
Pour être clair à 100% sur ce que je fais:
Créez la cachette:
~/tmp/a(master) $ git stash create
60629375d0eb12348f9d31933dd348ad0f038435
~/tmp/a(master) $ git st
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: b
#
~/tmp/a(master) $ git reset --hard
HEAD is now at 555d572 log message
Utilisez la cachette:
~/tmp/a(master) $ git apply 60629375d0eb12348f9d31933dd348ad0f038435
fatal: can't open patch '60629375d0eb12348f9d31933dd348ad0f038435': No such file or directory
~/tmp/a(master) $ git stash apply 60629375d0eb12348f9d31933dd348ad0f038435
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: b
#
Supprimez la cachette: (sauf que ce dernier bit ne fonctionne pas)
~/tmp/a(master) $ git stash drop !$
git stash drop 60629375d0eb12348f9d31933dd348ad0f038435
'60629375d0eb12348f9d31933dd348ad0f038435' is not a stash reference
git stash apply
a fonctionné. Les git apply
tentatives de lecture d'un fichier de correctif local, qui n'existe pas. Pour être honnête, cela ne devrait probablement pas être là, et cela n'aurait jamais pu fonctionner. Je suis vaguement tenté de le retirer de la question, mais étant donné qu'il a aidé tant de personnes dans sa forme actuelle, je vais la laisser telle quelle.
git apply
exécution dans la deuxième zone de code au moment de la rédaction de ce document n'a pas appliqué de correctif — le message d'erreur dans la sortie vous l'a dit. Donc, en fait, vous avez essayé de créer une cachette (qui n'a pas fonctionné, voir les commentaires ci-dessous) appliquer une cachette qui n'a pas été créée puis supprimer une cachette qui n'a pas été créée. C'est pourquoi rien de ce que vous avez fait n'a fonctionné.