Otrzymuję następujący błąd podczas pierwszej próby wypychania na Github:
[rejected] master -> master (non-fast forward)
error: failed to push some refs to '[email protected]:me/me.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again. See the 'non-fast forward'
section of 'git push --help' for details.
jak mogę to naprawić i scalić zdalne zmiany?
git pull
wykonaniu kolejnego commita, a potem powinno być dobrzegit checkout other-branch; git pull; git push; git checkout branch-i-was-working-on
.Możesz także wymusić wypchnięcie, dodając symbol + przed nazwą swojej gałęzi.
źródło
git reset --hard
Prawdopodobnie masz zmiany na githubie, których nigdy nie scaliłeś. Spróbuj
git pull
pobrać i scalić zmiany, wtedy powinieneś być w stanie push. Przepraszam, jeśli źle zrozumiałem Twoje pytanie.źródło
Jeśli zobaczysz komunikat „git pull” i zobaczysz komunikat „Już aktualny”, a nadal otrzymujesz ten błąd, może to być spowodowane tym, że jedna z pozostałych gałęzi nie jest aktualna. Spróbuj przełączyć się na inną gałąź i upewnij się, że jest ona również aktualna, zanim spróbujesz ponownie „git push”:
Przełącz się na gałąź „foo” i zaktualizuj ją:
Możesz zobaczyć posiadane gałęzie, wydając polecenie:
źródło
Możesz zmusić go do pchania, ale rób to TYLKO wtedy, gdy jesteś całkiem pewien, co robisz.
Polecenie to:
źródło
Ten problem może również wystąpić, gdy masz sprzeczne tagi. Jeśli twoja lokalna i zdalna wersja używają tej samej nazwy tagu dla różnych zatwierdzeń, możesz skończyć tutaj.
Możesz rozwiązać ten problem, usuwając lokalny tag:
źródło
Kiedy pojawił się ten błąd, utworzyłem kopię zapasową całego folderu projektu. Potem zrobiłem coś takiego
... w zależności od nazwy twojego oddziału (jeśli nie jest to master).
Wtedy zrobiłem
git pull --rebase
. Następnie zastąpiłem pobrane pliki plikami z kopii zapasowej projektu. Teraz jestem gotowy, aby ponownie zatwierdzić zmiany i naciskać.źródło
1) Wymuszanie ściągnięcia w celu nadpisania 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:
Spowoduje to natychmiastowe zniszczenie wszystkich lokalnych zmian, więc upewnij się, że wiesz, co robisz i nie potrzebujesz zmian lokalnych.
2) Zachowanie obu zmian (lokalnych i z 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.
źródło