Jak naprawić błąd Git „Lokalne zmiany w następujących plikach zostaną zastąpione przez scalenie”
Komunikat o błędzie „ Twoje lokalne zmiany w poniższych plikach zostaną zastąpione przez scalanie ” występuje w mechanizmie kontroli wersji Git. Ten błąd występuje, jeśli zmodyfikowałeś plik, który ma również modyfikacje w zdalnym repozytorium.
Ten komunikat o błędzie jest unikany, JEŻELI nie ma nieproszonych plików, które również mają modyfikacje w zdalnym repozytorium. Gdy pojawia się ten komunikat, najlepiej skonsultować się z innymi członkami zespołu i poprosić o ich opinię. Niezależnie od tego, czy chcesz scalić lokalne zmiany, czy zachować obecną wersję w repozytorium, najlepiej jest mieć wszystkich przy sobie.
Co to są repozytoria? Co to jest push i pull w Git?
Repozytorium jest rodzajem przechowywania kodu, który jest stale modyfikowany i uzyskiwany przez członków zespołu za pośrednictwem mechanizmu kontroli wersji GitHub. „ Pull” oznacza, że pobierasz najnowszą wersję repozytorium do lokalnego magazynu / IDE (zintegrowanego środowiska programistycznego), takiego jak Pycharm itp.
Po pociągnięciu wprowadzasz zmiany w kodzie lub dodajesz więcej funkcji. Po zakończeniu „ wypychasz” kod do repozytorium, aby zmiany były zapisywane i dodawane. Kod staje się dostępny również dla innych osób.
Jeśli dopiero zaczynasz korzystać z kontroli wersji Github, zalecamy najpierw zapoznanie się z podstawami. W tym artykule zakładamy, że masz już podstawową wiedzę i znasz wszystkie tajniki.
Jak naprawić „Twoje lokalne zmiany w poniższych plikach zostaną zastąpione przez scalanie”?
Rozwiązanie tego komunikatu o błędzie zależy od tego, co chcesz zrobić. Możesz odrzucić zmiany lokalne i pobrać je z repozytorium lub zapisać zmiany lokalne w skrytce i pobrać wersję z repozytorium. Wszystko zależy od twoich preferencji.
Dlatego zalecamy skonsultowanie się z członkami zespołu i upewnienie się, że wszyscy są na tej samej stronie przed przejściem do przodu. Jeśli popełnisz źle lub popchniesz niewłaściwą wersję, może to wpłynąć na cały zespół.
Metoda 1: Wymuszenie ściągnięcia w celu zastąpienia lokalnych zmian
Jeśli nie zależy ci na zmianach wprowadzonych lokalnie i chcesz uzyskać kod z repozytorium, możesz wymusić ściągnięcie. Spowoduje to zastąpienie wszystkich lokalnych zmian dokonanych na twoim komputerze, pojawi się duplikat kopii wersji w repozytorium.
Wykonaj następujące polecenia w swoim IDE:
git reset - mocne git pull
To natychmiast zniszczy wszystkie lokalne zmiany, więc upewnij się, że wiesz, co robisz i nie potrzebujesz lokalnych zmian.
Metoda 2: Utrzymanie obu zmian (lokalnych i z repozytorium)
Jeśli chcesz zachować obie zmiany (zmiany wprowadzone lokalnie i zmiany obecne w repozytorium), możesz dodać i zatwierdzić zmiany. Kiedy pociągniesz, oczywiście wystąpi konflikt scalania. Tutaj możesz użyć narzędzi w swoim IDE (takich jak Difftool i scaletool), aby porównać dwa fragmenty kodu i ustalić, które zmiany należy zachować, a które usunąć. To jest środkowa droga; żadne zmiany nie zostaną utracone, dopóki nie usuniesz ich ręcznie.
git dodaj $ the_file_under_error git commit git pull
Gdy pojawi się konflikt scalania, pop narzędzia rozwiązywania konfliktów i sprawdzaj wiersz po wierszu.
Metoda 3: Utrzymanie obu zmian, ALE nie zatwierdzanie
Taka sytuacja zdarza się od czasu do czasu, gdy programiści nie są gotowi do zatwierdzenia, ponieważ debugowany jest częściowo uszkodzony kod. Tutaj możemy bezpiecznie ukryć zmiany, wyciągnąć wersję z repozytorium, a następnie rozpakować kod.
git stash save --keep-index
lub
git skrytka
git pull git stash pop
Jeśli po pęknięciu skrytki wystąpią jakieś konflikty, powinieneś je rozwiązać w zwykły sposób. Możesz także użyć polecenia:
zastosowanie git stash
zamiast pop, jeśli nie jesteś gotowy stracić ukrytego kodu z powodu konfliktu.
Jeśli scalenie nie wydaje się dla ciebie opłacalną opcją, rozważ wykonanie rebase. Rebasing to proces przenoszenia lub łączenia sekwencji zatwierdzeń z nowym zatwierdzeniem podstawowym. W przypadku zmiany wersji zmień kod na:
git stash git pull --rebase origin master git stash pop
Metoda 4: Wprowadź zmiany w „określonych” częściach kodu
Jeśli chcesz wprowadzić zmiany w określonych częściach kodu i nie chcesz zamieniać wszystkiego, możesz zatwierdzić wszystko, czego nie chcesz zastąpić, a następnie postępować zgodnie z metodą 3. Możesz użyć następującego polecenia dla zmian, które chcesz zastąpić wersję obecną w repozytorium:
git pathout path / to / file / to / revert
lub
git checkout HEAD ^ path / to / file / to / revert
Ponadto należy upewnić się, że plik nie jest przemieszczany za pośrednictwem:
git reset HEAD ścieżka / do / pliku / do / przywróć
Następnie przejdź do polecenia pull:
git pull
Spróbuje to następnie pobrać wersję z repozytorium.