Sto usando git stash pop
da un po 'di tempo. Di recente ho scoperto il git stash apply
comando. Quando l'ho provato, sembrava funzionare come git stash pop
.
Qual è la differenza tra git stash pop
e git stash apply
?
Sto usando git stash pop
da un po 'di tempo. Di recente ho scoperto il git stash apply
comando. Quando l'ho provato, sembrava funzionare come git stash pop
.
Qual è la differenza tra git stash pop
e git stash apply
?
Risposte:
git stash pop
butta via lo stash (più in alto, per impostazione predefinita) dopo averlo applicato, mentre lo git stash apply
lascia nell'elenco degli stash per un possibile riutilizzo successivo (o puoi quindi git stash drop
farlo).
Ciò accade a meno che non ci siano conflitti dopo git stash pop
, nel qual caso non rimuoverà lo stash, lasciandolo comportarsi esattamente come git stash apply
.
Un altro modo di vederlo: git stash pop
è git stash apply && git stash drop
.
git stash pop
del risultato, otterrai comunque un errore di conflitto.
Ho questo link utile che afferma la differenza, come ha affermato John Zwinck e uno svantaggio di git stash pop
.
Ad esempio, supponi che le tue modifiche nascoste siano in conflitto con altre modifiche che hai apportato da quando hai creato la scorta. Sia pop che apply attiveranno in modo utile la modalità di risoluzione dei conflitti di unione, consentendoti di risolvere piacevolmente tali conflitti ... e nessuno dei due si sbarazzerà della scorta, anche se forse ti aspetti anche il pop. Dal momento che molte persone si aspettano che gli stash siano solo uno stack, questo spesso li porta a far scattare accidentalmente lo stesso stash in seguito perché pensavano che fosse sparito.
Link: http://codingkilledthecat.wordpress.com/2012/04/27/git-stash-pop-considered-harmful/
Vederlo in azione potrebbe aiutarti a capire meglio la differenza.
Supponendo che stiamo lavorando su un master
ramo e che abbiamo un file hello.txt
che contiene una stringa "Hello".
Modifichiamo il file e aggiungiamo la stringa "world". Ora vuoi passare a un altro ramo per correggere un bug minore che hai appena trovato, quindi devi stash
apportare le modifiche:
git stash
Ti sei spostato sull'altro ramo, hai corretto il bug e ora sei pronto per continuare a lavorare sul tuo master
ramo, quindi hai pop
le modifiche:
git stash pop
Ora se provi a rivedere il contenuto di stash otterrai:
$ git stash show -p
No stash found.
Tuttavia, se usi git stash apply
invece, otterrai il contenuto nascosto ma lo manterrai anche:
$ git stash show -p
diff --git a/hello.txt b/hello.txt
index e965047..802992c 100644
--- a/hello.txt
+++ b/hello.txt
@@ -1 +1 @@
-Hello
+Hello world
Quindi pop
è proprio come il pop dello stack: in realtà rimuove l'elemento una volta spuntato, mentre apply
è più simile a sbirciatina .
In git
stash è un'area di archiviazione in cui è possibile spostare i file modificati attualmente.
stash
area è utile quando si desidera estrarre alcune modifiche dal git
repository e rilevate alcune modifiche in alcuni file reciproci disponibili nel git
repository.
git stash apply //apply the changes without removing stored files from stash area.
git stash pop // apply the changes as well as remove stored files from stash area.
Nota: -
git apply
applicare solo le modifiche dall'area di scorta mentre sigit pop
applica, nonché rimuovere le modifichestash
dall'area.
Git Stash Pop vs apply
Working
Se si desidera applicare le modifiche stash principali alle modifiche non gestite correnti ed eliminare anche quelle stash, è necessario procedere git stash pop
.
# apply the top stashed changes and delete it from git stash area.
git stash pop
Ma se si desidera applicare le modifiche in primo piano alle modifiche non in scena correnti senza eliminarle, è necessario procedere git stash apply
.
Nota: è possibile correlare questo caso con
Stack
classepop()
epeek()
metodi, in cui pop modifica la parte superiore in base ai decrementi (top = top-1) ma è inpeek()
grado di ottenere solo l'elemento top.