C'è un comando git stash
che immagazzina le modifiche, ma li tiene nella directory di lavoro troppo? Quindi in pratica uno git stash; git stash apply
in un solo passaggio?modifiche Stash, mantenendo i cambiamenti nella directory di lavoro in Git
risposta
Per quel che vale, un altro modo per farlo è quello di mettere in scena le modifiche che si desidera conservare, e poi riporre tutto utilizzando --keep-index
:
$ git add modified-file.txt
$ git stash save --keep-index
Il i comandi sopra riporteranno tutto incluso modified-file.txt
, ma lasceranno anche quel file in stasi e nella directory di lavoro.
Dal official Linux Kernel Git documentation for git stash
:
Se si utilizza l'opzione
--keep-index
, tutte le modifiche già aggiunti all'indice vengono lasciati intatti.
git stash
e quindi git stash apply
(git stash && git stash apply
) archivierà i file e applicherà lo stash immediatamente dopo. Dopotutto avrai le tue modifiche in stash e in dir lavoro. È possibile creare un alias se lo si desidera in un unico pezzo. Basta mettere qualcosa di simile per ~/.gitconfig
:
[alias]
sta = "!git stash && git stash apply"
C'è un trucco può aiutare, non riporre' cosa ma FWIW:
git add -A
git commit -m "this is what's called stashing" (create new stash commit)
git tag stash (mark the commit with 'stash' tag)
git reset HEAD~ (Now go back to where you've left with your working dir intact)
E così ora si dispone di un commit scorta tag a vostra disposizione, non è possibile fare una git stash pop
in ogni caso, ma si può fare cose come la creazione di patch o il ripristino di file ecc. da lì, i file di lavoro in uso rimangono anche intatti in BTW.
Un piccolo miglioramento nella risposta, che in pratica può probabile che l'uso.
$ git add modified-file.txt
(OR $ git add . ---- for all modified file)
$ git stash save --keep-index "Your Comment"
+1 se mi dici come creare un alias – anthropomorphic
anche, qual è la differenza tra 'git stash; git stash apply' e 'git stash && git stash apply'? – anthropomorphic
Credo che la differenza sia che ['&&' esegue il secondo comando solo se prima ha restituito zero codice di stato] (http://linux-training.be/files/books/html/fun/ch11s04.html). – madhead