web-dev-qa-db-fra.com

Comment faire pour que git stash inclue de nouveaux fichiers qui n'ont pas été mis en scène?

Je ne suis pas un grand expert en git, mais je l'utilise depuis quelques années. Dernièrement, j'ai remarqué un comportement étrange lié à la dissimulation. Il semble que cela ne fonctionne que partiellement pour moi.

Par exemple, aujourd'hui, j'ai essayé de cacher 4 modifications non validées. 1 fichier a été ajouté à la réserve, les 3 restants sont restés en tant que modifications non validées. J'ai essayé plusieurs fois et après la première tentative, je n'obtenais "Pas de changements locaux à enregistrer", mais le statut montrait toujours les 3 changements non validés.

Cependant, par coïncidence, j'ai découvert que lorsque je mettrai en scène les changements précédemment instasables, ils seront cachés normalement. J'ai joué et c'est reproductible: si toutes les modifications ne sont pas validées, seule la modification est cachée. Si les modifications du "problème" sont mises en scène, toutes les modifications sont mises en cache (peu importe si la "bonne" modification est mise en scène ou non, elle sera toujours mise en cache).

Est-ce un bug ou est-ce que je fais quelque chose de mal?

J'utilise Git pour Windows 2.8.2 et les extensions Git 2.48.05.

Peu importe que j'essaie de cacher les modifications via l'interface graphique de Git Extensions ou via la console.

EDIT: Si je mets en scène les 4 changements avant le stashing, quand je fais un stash pop, les 3 changements de problème sont mis en scène, comme auparavant, mais le bon changement, qui stashes toujours, n'est pas engagé. Ainsi, la pop stash ne retourne pas le statut à la façon dont il était avant la stash. Ceci est également reproductible.

19
Simon Tewsi

Le problème semble être que par défaut la commande stash n'inclura pas les fichiers non suivis.

Pour inclure des fichiers non suivis, utilisez le -u (--include-untracked) drapeau:

git stash -u

Si l'option - include-untracked est utilisée, tous les fichiers non suivis sont également stockés puis nettoyés avec git clean, laissant le répertoire de travail dans un très état propre.

32
Jonathan.Brink