Używam od git stash pop
dłuższego czasu. Niedawno dowiedziałem się o git stash apply
poleceniu. 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 pop
i git stash apply
?
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 pop
wystą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 pop
jest git stash apply && git stash drop
.
git stash pop
wynik, 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
.Link: http://codingkilledthecat.wordpress.com/2012/04/27/git-stash-pop-consanted-harmful/
źródło
git stash pop
stosuje górny ukryty element i usuwa go ze stosu.git stash apply
robi to samo, ale pozostawia go w stosie skrytek.źródło
Widząc to w akcji, możesz lepiej zrozumieć różnicę.
Zakładając, że pracujemy nad
master
gałęzią i mamy plikhello.txt
zawierają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
stash
wprowadzić zmiany:Przeprowadziłeś się do drugiej gałęzi, naprawiłeś błąd i teraz możesz kontynuować pracę nad
master
gałęzią, więcpop
zmiany:Teraz, jeśli spróbujesz przejrzeć zawartość skrytki, otrzymasz:
Jeśli jednak użyjesz
git stash apply
zamiast tego, otrzymasz ukrytą zawartość, ale również ją zatrzymasz:Podobnie
pop
jest z popem stosu - w rzeczywistości usuwa element po jego pęknięciu, aapply
bardziej przypomina podglądanie .źródło
W
git
zapasach to powierzchnia magazynowa, gdzie obecne pliki zmienione mogą zostać przeniesione.stash
Obszar jest przydatny, gdy chcesz pobrać niektóre zmiany zgit
repozytorium i wykryć pewne zmiany w niektórych plikach wzajemnych dostępnych wgit
repozytorium.źródło
Git Stash
Pop vs apply
WorkingJeśli chcesz zastosować najlepsze ukryte zmiany do bieżącej zmiany niestacjonarnej i usunąć również tę skrytkę, powinieneś wybrać
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
.źródło