git stash e git pull


92

Sono nuovo di Git e sto usando il plugin EGit eclipse per eseguire il commit.

Ho modificato alcuni file e ho nascosto le modifiche, quindi l'ho fatto git pullnella riga di comando che ha richiamato tutti i commit più recenti. Poi l'ho fatto Apply stashed changesda EGit. Ora ha applicato le mie modifiche e le modifiche estratte dall'ultimo commit dei file nascosti sono state eliminate. Non sono sicuro del motivo per cui non mi ha chiesto informazioni sui conflitti di unione e ha sovrascritto le mie modifiche e ha perso le modifiche ai commit precedenti.

Come ottenere queste modifiche?


Non sembra plausibile. L'applicazione stash apporta modifiche non conflittuali o causa conflitti di unione. Penso che ti sei dimenticato di menzionare qualcosa. Inoltre, potresti ripetere i tuoi passaggi, molto probabilmente la tua scorta è ancora nell'elenco, usa git stash listper mostrarla.
kan

Risposte:


215

Quando hai modifiche sulla tua copia di lavoro, dalla riga di comando fai:

git stash 

Ciò memorizzerà le modifiche e cancellerà il rapporto sullo stato

git pull

Questo attirerà le modifiche dal ramo a monte. Assicurati che nel rapporto sia indicato l'avanzamento rapido. In caso contrario, probabilmente stai facendo un'unione involontaria

git stash pop

Questo applicherà le modifiche nascoste alla copia di lavoro e rimuoverà le modifiche dallo stash a meno che tu non abbia conflitti. In caso di conflitto, rimarranno nella scorta in modo da poter ricominciare se necessario.

se hai bisogno di vedere cosa c'è nella tua scorta

git stash list

@java_newbie, se vuoi farlo con stash e pull no, non c'è modo. Ma puoi ottenere lo stesso risultato con rebase. Il comando 'git rebase origin / <nome del ramo upstream>' dovrebbe fare la stessa cosa.
yilmazhuseyin

5
Penso che questo lo farà:git stash && git pull && git stash pop
Fabrice Kabongo

@yilmazhuseyin Cosa intendi per "stesso risultato" Puoi fornire un aneddoto se puoi? Volevi dire git rebase origin/masterche produrrà lo stesso risultato di git stash; git pull; git stash pop?
nehem

9
Se utilizzi Git v2.9.0 o versione successiva, prova git pull --rebase --autostash. FYI
momocow

1
Funziona --autostashsempre? Ad esempio, se ho file non tracciati che sono già parzialmente in Git?
qräbnö
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.