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.

Błąd Git: lokalne zmiany w następujących plikach zostaną zastąpione przez scalanie

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.

Ciekawe Artykuły