Mam kilka plików, które nie zostały wyśledzone w git. Wprowadziłem kilka zmian i chciałem je zatwierdzić, ale zdałem sobie sprawę, że zapomniałem najpierw sprawdzić niezmodyfikowane pliki. Więc ukryłem pliki, a następnie dodałem niezmodyfikowane wersje.
Następnie, kiedy stosuję ukrytą skrzynkę w repozytorium, dostaję konflikty z powodu dodanych plików.
Jak mogę zastosować skrytkę i zmusić wersje w skrytce do użycia zamiast oryginałów w repozytorium?
Dzięki
git rm
przed użyciemgit stash apply
.git
potraktuje go jak drobną modyfikację.Odpowiedzi:
Użyj
git checkout
zamiastgit stash apply
:Spowoduje to przywrócenie wszystkich plików w bieżącym katalogu do ich ukrytej wersji.
Jeśli istnieją zmiany w innych plikach w katalogu roboczym, które powinny być przechowywane, oto mniej wymagająca alternatywa:
Jeśli w indeksie wystąpią zmiany lub scalenie dotknie plików zmianami lokalnymi, git odmówi scalenia. Poszczególne pliki można pobrać ze skrytki za pomocą
lub interaktywnie z
źródło
git checkout stash -- .
To polecenie dosłownie nic nie zrobiło, gdy je uruchomiłem.git checkout stash -- .
w najwyższym folderze nadrzędnym, który zawierał moje zmiany, w przeciwnym razie zastosowałby zmiany tylko do folderu, z którego uruchomiłem polecenie..
określa bieżący katalog (możesz go zastąpić inną ścieżką zamiast zmieniać katalog). Zaktualizowałem swoją odpowiedź, aby była bardziej przejrzysta.git stash show -p | git apply
a następnie,
git stash drop
jeśli chcesz upuścić ukryte przedmioty.źródło
Aby wymusić
git stash pop
uruchomienie tego poleceniaźródło
TL; DR:
Długa wersja:
Ten błąd występuje z powodu niezamierzonych zmian, które chcesz zastąpić. Cofnij te zmiany za pomocą
git checkout HEAD
. Możesz cofnąć zmiany w określonym pliku za pomocągit checkout HEAD path/to/file
. Po usunięciu przyczyny konfliktu możesz złożyć wniosek jak zwykle.źródło