Sto usando git stash popda un po 'di tempo. Di recente ho scoperto il git stash applycomando. Quando l'ho provato, sembrava funzionare come git stash pop.
Qual è la differenza tra git stash pope git stash apply?
Sto usando git stash popda un po 'di tempo. Di recente ho scoperto il git stash applycomando. Quando l'ho provato, sembrava funzionare come git stash pop.
Qual è la differenza tra git stash pope 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 dropfarlo).
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 popdel 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 masterramo e che abbiamo un file hello.txtche 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 stashapportare le modifiche:
git stash
Ti sei spostato sull'altro ramo, hai corretto il bug e ora sei pronto per continuare a lavorare sul tuo masterramo, quindi hai pople 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 applyinvece, 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.
stasharea è utile quando si desidera estrarre alcune modifiche dal gitrepository e rilevate alcune modifiche in alcuni file reciproci disponibili nel gitrepository.
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 applyapplicare solo le modifiche dall'area di scorta mentre sigit popapplica, nonché rimuovere le modifichestashdall'area.
Git Stash Pop vs applyWorking
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
Stackclassepop()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.