Oto moja strategia rozwiązania problemu.
Opis problemu
Musimy wprowadzić zmiany w ponad 10 plikach. Próbowaliśmy PULL (git pull origin master)
, ale Git krzyknął:
błąd: lokalne zmiany w następujących plikach zostałyby zastąpione przez scalenie: proszę zatwierdzić zmiany lub ukryć je przed scaleniem.
Próbowaliśmy commit
wtedy wykonać pull
, ale one również nie działały.
Rozwiązanie
Właściwie byliśmy w brudnej fazie, ponieważ pliki znajdowały się w „Strefie przejściowej”, zwanej też „Strefą indeksów”, a niektóre znajdowały się w „Głównej strefie”, czyli „lokalnym katalogu Git”. I chcieliśmy pobrać zmiany z serwera.
Sprawdź ten link, aby uzyskać informacje na temat różnych etapów Git w przejrzysty sposób: Etapy GIT
Wykonaliśmy następujące kroki
git stash
(dzięki temu nasz katalog roboczy był czysty. Twoje zmiany są przechowywane na stosie przez Git).
git pull origin master
(Wyciągnij zmiany z serwera)
git stash apply
(Zastosował wszystkie zmiany ze stosu)
git commit -m 'message'
(Zatwierdził zmiany)
git push origin master
(Przekazał zmiany na serwer)
git stash drop
(Upuść stos)
Rozumiemy, kiedy i dlaczego potrzebujesz ukrywania
Jeśli jesteś w stanie brudnym , oznacza to, że dokonujesz zmian w swoich plikach, a następnie z jakiegoś powodu jesteś zmuszony pociągnąć lub przejść do innego oddziału w celu wykonania bardzo pilnej pracy, więc w tym momencie nie możesz wyciągnąć lub przełączaj, dopóki nie zatwierdzisz zmiany. stash
Polecenia jest tutaj jako pomocnej dłoni.
Z książki ProGIT , wydanie drugie:
Często, gdy pracujesz nad częścią swojego projektu, rzeczy są w nieuporządkowanym stanie i chcesz zmienić gałęzie, aby trochę popracować nad czymś innym. Problem polega na tym, że nie chcesz wykonywać częściowo wykonanej pracy, abyś mógł wrócić do tego punktu później. Odpowiedzią na ten problem jest polecenie git stash. Ukrywanie zajmuje brudny stan katalogu roboczego - to znaczy zmodyfikowane pliki śledzenia i zmiany etapowe - i zapisuje je na stosie niedokończonych zmian, które można ponownie zastosować w dowolnym momencie.