Komunikat o błędzie „ Twoje lokalne zmiany w następujących plikach zostaną nadpisane przez scalenie ” pojawia się w mechanizmie kontroli wersji Git. Ten błąd występuje, jeśli zmodyfikowałeś plik, który również zawiera modyfikacje w zdalnym repozytorium.
Ten komunikat o błędzie jest unikany, JEŚLI nie ma niezatwierdzonych plików, które również mają modyfikacje w zdalnym repozytorium. Gdy doświadczasz tej wiadomości, najlepiej skonsultuj się z innymi członkami zespołu i poproś o ich opinię. Niezależnie od tego, czy chcesz scalić lokalne zmiany, czy zachować wersję obecną w repozytorium, najlepiej jest mieć wszystkich na pokładzie.
Co to są repozytoria? Co to jest push and pull w Git?
Repozytorium to rodzaj magazynu dla kodu, który jest stale modyfikowany i pozyskiwany przez członków zespołu za pośrednictwem mechanizmu kontroli wersji GitHub. A „ Pull” oznacza, że jesteś ciągnąc ostatnią wersję repozytorium na lokalnym przechowywania / IDE (Integrated Development Environment), takie jak pycharm etc.
Po ściągnięciu wprowadzasz zmiany w kodzie lub dodajesz więcej funkcji. Gdy skończysz, „ wypychasz” kod do repozytorium, aby zmiany zostały zapisane i uzupełnione. Kod staje się również dostępny dla innych osób.
Jeśli nie masz doświadczenia z kontrolą wersji Github, zalecamy najpierw zapoznanie się ze wszystkimi podstawami. W tym artykule zakładamy, że masz już podstawową wiedzę i znasz wszystkie tajniki.
Jak naprawić „Twoje lokalne zmiany w następujących plikach zostaną nadpisane przez scalenie”?
Rozwiązanie tego komunikatu o błędzie zależy od tego, co chcesz zrobić. Możesz odrzucić lokalne zmiany i pobrać te z repozytorium lub zapisać lokalne zmiany 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 jesteście na tej samej stronie, zanim przejdziecie dalej. Jeśli popełnisz błąd lub wprowadzisz złą 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 dbasz o zmiany dokonane lokalnie i chcesz uzyskać kod z repozytorium, możesz wymusić ściągnięcie. Spowoduje to nadpisanie wszystkich lokalnych zmian dokonanych na komputerze i pojawi się zduplikowana kopia wersji w repozytorium.
Wykonaj następujące polecenia w swoim IDE:
git reset - hard git pull
Spowoduje to natychmiastowe zniszczenie wszystkich lokalnych zmian, więc upewnij się, że wiesz, co robisz i nie potrzebujesz zmian lokalnych.
Metoda 2: Zachowanie obu zmian (lokalnych iz repozytorium)
Jeśli chcesz zachować obie zmiany (zmiany dokonane lokalnie i zmiany obecne w repozytorium), możesz dodać i zatwierdzić swoje zmiany. Kiedy pociągniesz, oczywiście nastąpi konflikt scalania. Tutaj możesz użyć narzędzi w swoim IDE (takich jak Difftool i Mergetool), aby porównać dwa fragmenty kodu i określić, które zmiany 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
Kiedy pojawi się konflikt scalania, włącz narzędzia do rozwiązywania konfliktów i sprawdzaj wiersz po wierszu.
Metoda 3: Zachowanie obu zmian, ALE ich nie zatwierdzenie
Taka sytuacja zdarza się od czasu do czasu, gdy programiści nie są gotowi do zatwierdzenia, ponieważ istnieje jakiś częściowo uszkodzony kod, który debugujesz. Tutaj możemy bezpiecznie przechowywać zmiany, wyciągnąć wersję z repozytorium, a następnie rozpakować kod.
git stash save --keep-index
lub
git stash
git pull git stash pop
Jeśli po otwarciu skrytki pojawią się konflikty, powinieneś rozwiązać je w zwykły sposób. Możesz też użyć polecenia:
git stash Apply
zamiast popu, jeśli nie jesteś gotowy na utratę ukrytego kodu z powodu konfliktów.
Jeśli scalanie nie wydaje się dla Ciebie realną opcją, rozważ wykonanie rebase. Rebasing to proces przenoszenia lub łączenia sekwencji zatwierdzeń do nowego zatwierdzenia podstawowego. W przypadku zmiany bazy, 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 zastępować wszystkiego, możesz zatwierdzić wszystko, czego nie chcesz nadpisać, a następnie zastosować metodę 3. Możesz użyć następującego polecenia do zmian, które chcesz nadpisać z wersji obecnej w repozytorium:
git checkout path / to / file / to / revert
lub
git checkout HEAD ^ ścieżka / do / pliku / do / przywróć
Musisz również upewnić się, że plik nie jest przemieszczany przez:
git reset HEAD path / to / file / to / revert
Następnie wykonaj polecenie pull:
git pull
Spowoduje to następnie próbę pobrania wersji z repozytorium.