Comme cela a été dit ailleurs, la réponse est au git add
dossier. par exemple:
git add path/to/untracked-file
git stash
Cependant, la question se pose également dans une autre réponse: que faire si vous ne voulez pas vraiment ajouter le fichier? Pour autant que je sache, vous devez le faire. Et ce qui suit ne fonctionnera PAS :
git add -N path/to/untracked/file # note: -N is short for --intent-to-add
git stash
cela échouera, comme suit:
path/to/untracked-file: not added yet
fatal: git-write-tree: error building trees
Cannot save the current index state
Alors que peux-tu faire? Eh bien, vous devez vraiment ajouter le fichier, cependant , vous pouvez effectivement le supprimer ultérieurement, avec git rm --cached
:
git add path/to/untracked-file
git stash save "don't forget to un-add path/to/untracked-file" # stash w/reminder
# do some other work
git stash list
# shows:
# stash@{0}: On master: don't forget to un-add path/to/untracked-file
git stash pop # or apply instead of pop, to keep the stash available
git rm --cached path/to/untracked-file
Et puis vous pouvez continuer à travailler, dans le même état que vous étiez avant le git add
(à savoir avec un fichier non suivi appelé path/to/untracked-file
; plus toutes les autres modifications que vous auriez pu avoir à suivre les fichiers).
Une autre possibilité pour un flux de travail à ce sujet serait quelque chose comme:
git ls-files -o > files-to-untrack
git add `cat files-to-untrack` # note: files-to-untrack will be listed, itself!
git stash
# do some work
git stash pop
git rm --cached `cat files-to-untrack`
rm files-to-untrack
[Remarque: Comme mentionné dans un commentaire de @mancocapac, vous souhaiterez peut-être ajouter --exclude-standard
à la git ls-files
commande (donc, git ls-files -o --exclude-standard
).]
... qui pourrait également être facilement scripté - même les alias feraient l'affaire (présentés dans la syntaxe zsh; ajustez selon les besoins) [aussi, j'ai raccourci le nom du fichier pour qu'il tienne tout sur l'écran sans faire défiler cette réponse; n'hésitez pas à remplacer un autre nom de fichier de votre choix]:
alias stashall='git ls-files -o > .gftu; git add `cat .gftu`; git stash'
alias unstashall='git stash pop; git rm --cached `cat .gftu`; rm .gftu'
Notez que ce dernier pourrait être mieux comme un script shell ou la fonction, pour permettre les paramètres à fournir à git stash
, au cas où vous ne voulez pas , pop
mais apply
, et / ou si vous voulez être en mesure de spécifier une planque spécifique, plutôt que de prendre le dessus une. Peut-être que ceci (au lieu du deuxième alias ci-dessus) [espace blanc dépouillé pour tenir sans défilement; rajouter pour une lisibilité accrue]:
function unstashall(){git stash "${@:-pop}";git rm --cached `cat .gftu`;rm .gftu}
Remarque : Dans ce formulaire, vous devez fournir un argument d'action ainsi que l'identifiant si vous allez fournir un identifiant de stash, par exemple unstashall apply stash@{1}
ouunstashall pop stash@{1}
Lequel bien sûr vous mettriez dans votre .zshrc
ou équivalent pour faire exister à long terme.
J'espère que cette réponse sera utile à quelqu'un, tout rassembler dans une seule réponse.
git stash show
ne retourne rien et vous pourriez être tenté de le supprimer (comme je viens de le faire alors qu'il contenait un script utile que j'ai écrit il y a quelques mois) → comment récupérer une réserve perdue )