Założyłem kilka lokalnych zmian przed wykonaniem skomplikowanego scalenia, scaliłem, a potem głupio zapomniałem zatwierdzić przed uruchomieniem git stash pop
. Pop stworzył pewne problemy (złe wywołania metod w dużej bazie kodu), które są trudne do wyśledzenia. Uruchomiłem git stash show
, więc przynajmniej wiem, które pliki zostały zmienione. Jeśli nic więcej, myślę, że to lekcja, by popełnić więcej.
Moje pytanie: czy można cofnąć ukryty pop bez cofania scalania?
git stash pop
bez wcześniejszego zobowiązania. Co zrobiłeś, aby to osiągnąć?git stash pop
po wprowadzeniu zmian (nie popełniłem jednak) z wersją gitstash pop/apply
przed zatwierdzeniem, możesz strzelaćgit fsck --lost-found
. To polecenie wykona iterację przez wiszące obiekty BLOB (rzeczywiste pliki dla tych, którzy nie znają terminologii git), które zostały zainscenizowane, ale nie zostały nigdzie zatwierdzone (dlatego zwisają), i umieści je w katalogu .git / lost-found / , gdzie możnagit show
je zobaczyć i zobaczyć jeśli są to pliki, których szukasz.Odpowiedzi:
Spróbuj użyć Jak odzyskać upuszczoną skrytkę w Git? żeby znaleźć ukryty przez ciebie zapas. Myślę, że zawsze są dwa zatwierdzenia dla skrytki, ponieważ zachowuje ona indeks i kopię roboczą (tak często zatwierdzanie indeksu będzie puste). Następnie
git show
, aby zobaczyć różnicę i użyć,patch -R
aby je zastosować.źródło
git fsck --no-reflog | awk '/dangling commit/ {print $3}'
(z linku) i właśnie ręcznie znalazłem problem z tej różnicy. Dzięki!git diff -p ${STACH_SHA1}~1 ${STASH_SHA1} | patch -R -p1
:; Próbowałemgit show
zgodnie z sugestią, ale jego wyniki nie były dobre dla łatki; musiałem także zapewnić-p1
opcję łatania w celu usunięcia elementua/..
ib/..
, którygit diff
umieszcza przed plikami, w przeciwnym razie nie rozwiązałoby to ścieżek z katalogu głównego repozytorium. SUGESTIA: bądź ostrożny i poprowadź bałagan w osobnej gałęzi przed rozpoczęciem gry z patchem.stash pop
istash push
wyzwoli zatwierdzenie, które zapisze zmiany w indeksie i katalogu roboczym, prawda?Z
git stash --help
Pomogło mi to lepiej niż zaakceptowana odpowiedź w tym samym scenariuszu.
źródło
Jeśli połączenie nie było zbyt skomplikowane, inną opcją byłoby:
Potem pozostały tylko zmiany ze skrytki, którą upuściłeś zbyt wcześnie.
źródło