È possibile, senza pop stash intero e salvare un altro senza questo particolare file?È possibile rilasciare un singolo file da git stash?
risposta
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.
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.
--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 lentalstat(2)
(ad esempiocifs
).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)