2013-07-24 2 views

risposta

67

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.

27

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" 
+0

+1 se mi dici come creare un alias – anthropomorphic

+0

anche, qual è la differenza tra 'git stash; git stash apply' e 'git stash && git stash apply'? – anthropomorphic

+8

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

2

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.

3

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"