Używam od git stash popdłuższego czasu. Niedawno dowiedziałem się o git stash applypoleceniu. Kiedy go wypróbowałem, wydawało się, że działa tak samo jak git stash pop.
Jaka jest różnica między git stash popi git stash apply?
Używam od git stash popdłuższego czasu. Niedawno dowiedziałem się o git stash applypoleceniu. Kiedy go wypróbowałem, wydawało się, że działa tak samo jak git stash pop.
Jaka jest różnica między git stash popi git stash apply?
Odpowiedzi:
git stash pop wyrzuca (najwyżej domyślnie) skrytkę po jej zastosowaniu, git stash apply pozostawiając ją na liście skrytek w celu ewentualnego późniejszego ponownego wykorzystania (lub możesz wtedy git stash drop).
Dzieje się tak, chyba że później git stash popwystąpią konflikty , w którym to przypadku nie usunie skrytki, pozostawiając ją dokładnie taką samą git stash apply.
Innym sposobem, aby na to spojrzeć: git stash popjest git stash apply && git stash drop.
git stash popwynik, nadal występuje błąd konfliktu.
Mam ten pomocny link, który określa różnicę, jak stwierdził John Zwinck, i wadą git stash pop.
Powiedzmy na przykład, że twoje zmiany ukryte są w konflikcie z innymi zmianami, które wprowadziłeś od czasu pierwszego utworzenia skrytki. Zarówno pop, jak i zastosuj, aktywują tryb rozwiązywania konfliktów scalania, umożliwiając ładne rozwiązanie takich konfliktów… i żadne z nich nie pozbędzie się skrytki, chociaż być może oczekujesz też popu. Ponieważ wiele osób spodziewa się, że skrytki są zwykłym stosem, często prowadzi to do przypadkowego późniejszego wyrzucenia tego samego skrytki, ponieważ myśleli, że go nie ma.
Link: http://codingkilledthecat.wordpress.com/2012/04/27/git-stash-pop-consanted-harmful/
Widząc to w akcji, możesz lepiej zrozumieć różnicę.
Zakładając, że pracujemy nad mastergałęzią i mamy plik hello.txtzawierający ciąg „Hello”.
Zmodyfikujmy plik i dodajmy do niego ciąg „world”. Teraz chcesz przejść do innej gałęzi, aby naprawić właśnie znaleziony drobny błąd, więc musisz stashwprowadzić zmiany:
git stash
Przeprowadziłeś się do drugiej gałęzi, naprawiłeś błąd i teraz możesz kontynuować pracę nad mastergałęzią, więc popzmiany:
git stash pop
Teraz, jeśli spróbujesz przejrzeć zawartość skrytki, otrzymasz:
$ git stash show -p
No stash found.
Jeśli jednak użyjesz git stash applyzamiast tego, otrzymasz ukrytą zawartość, ale również ją zatrzymasz:
$ 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
Podobnie popjest z popem stosu - w rzeczywistości usuwa element po jego pęknięciu, a applybardziej przypomina podglądanie .
W git zapasach to powierzchnia magazynowa, gdzie obecne pliki zmienione mogą zostać przeniesione.
stashObszar jest przydatny, gdy chcesz pobrać niektóre zmiany z gitrepozytorium i wykryć pewne zmiany w niektórych plikach wzajemnych dostępnych w gitrepozytorium.
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.
Uwaga: -
git applystosuj zmiany tylko z obszaru skrytki podczasgit popstosowania, a także usuwaj zmiany zstashobszaru.
Git Stash Pop vs applyWorking
Jeśli chcesz zastosować najlepsze ukryte zmiany do bieżącej zmiany niestacjonarnej i usunąć również tę skrytkę, powinieneś wybrać git stash pop.
# apply the top stashed changes and delete it from git stash area.
git stash pop
Ale jeśli chcesz zastosować swoje najważniejsze zmiany do bieżącej zmiany niestopowej bez usuwania jej, powinieneś wybrać git stash apply.
Uwaga: Możesz powiązać ten przypadek z
Stackklasąpop()ipeek()metodami, w których pop zmienia górę za pomocą dekrementów (top = top-1), alepeek()może tylko uzyskać element najwyższy.