2010-06-26 21 views

risposta

2

Risposta breve: no, non è così che la pila lavori. Puoi fare ciò che segue per ottenere il risultato che stai cercando.

Supponendo che hai nascosto alcune altri modifiche, quindi apportato alcune ulteriori modifiche al vostro indice (modifiche originali) e si decide che si desidera mantenere le modifiche durante la modifica della scorta:

#verify the state you are in 
git stash list 
git status 

git stash #push work in progress on the stash 
git stash list #check which stash you need 
git stash show [email protected]{1} #check the changes in the stash 

git stash pop [email protected]{1} #you're now ready to change your 'other' changeset 
# hack hack 
git stash #modified 'other' change set pushed on the stash 
git stash pop [email protected]{1} #your 'original changes' 

Consiglierei questo flusso di lavoro per tentare di modificare direttamente lo stash. Se ti perdi nei numeri di scorta puoi anche usare git stash save 'some other changes'

A un certo punto (probabilmente più vicino di quanto pensi) è più facile tenere traccia dei rami reali.

1

Si potrebbe provare, dopo popping tuo stack, per contrassegnare il file che non si vuole riporre come "invariata":

git update-index --assume-unchanged -- /path/to/file 

, e quindi provare a riporre, controllare se tale file è incluso o non.

git update-index man page:

--assume-unchanged 
--no-assume-unchanged 

Quando si specificano questi flag, i nomi degli oggetti rilevati per i percorsi non vengono aggiornati.
Invece, queste opzioni impostano e disattivano il bit "assuma invariato" per i percorsi.

Quando il bit "assume immutato" è attivo, git interrompe il controllo dei file dell'albero di lavoro per eventuali modifiche, quindi è necessario rimuovere manualmente il bit per dire git quando si modifica il file dell'albero di lavoro.
Questo è talvolta utile quando si lavora con un grande progetto su un filesystem che ha una chiamata di sistema molto lenta lstat(2) (ad esempio cifs).

Questa opzione può essere utilizzata anche come un meccanismo a livello di file grossolana a ignorare le modifiche non salvate nei file cingolati (simile a quello che .gitignore fa per i file non monitorate)