Używam Git do zarządzania moimi dwoma komputerami i rozwojem. Próbuję zatwierdzić zmiany w GitHub i otrzymuję błąd.
Nie udało się odesłać niektórych referencji
<repo>
. Aby zapobiec utracie historii, odrzucono aktualizacje bez szybkiego przewijania do przodu. Scal zdalne zmiany przed ponownym naciśnięciem.
Co może być tego przyczyną i jak mogę to naprawić?
EDYTOWAĆ:
Wyciągnięcie repozytorium zwraca następujące dane:
* gałąź główna -> główna (bez przewijania do przodu) Już aktualna
Pchanie nadal powoduje wspomniany błąd.
git
version-control
Mosze
źródło
źródło
Odpowiedzi:
GitHub ma fajną sekcję o nazwie „ Radzenie sobie z błędami „ niezwiązanymi z przewijaniem do przodu ” ”
Git nie może wprowadzać zmian na pilocie, takich jak szybkie scalanie do przodu, co ilustruje Visual Git Reference :
Nie jest to dokładnie twój przypadek, ale pomaga zobaczyć, czym jest „przewijanie do przodu” (gdzie
HEAD
gałąź jest po prostu przenoszona do nowego, nowszego zatwierdzenia).Znak „
branch master->master (non-fast-forward) Already-up-to-date
” jest zwykle przeznaczony dla lokalnych oddziałów, które nie śledzą swoich zdalnych odpowiedników.Zobacz na przykład to pytanie SO " git pull mówi, że jest aktualny, ale git push odrzuca non-fast forward ".
Albo te dwie gałęzie są połączone, ale nie zgadzają się z ich historią:
Zobacz „ Niekończąca się historia GIT - co ja tu robię źle? ”
źródło
Oznacza to, że do zdalnego repozytorium zostały wysłane inne zatwierdzenia, które różnią się od twoich zatwierdzeń. Zwykle można to rozwiązać za pomocą pliku
zanim pchniesz
Ostatecznie „przewijanie do przodu” oznacza, że zatwierdzenia można zastosować bezpośrednio na szczycie drzewa roboczego bez konieczności łączenia.
źródło
Szybka aktualizacja polega na tym, że jedyne zmiany po jednej stronie następują po ostatnim zatwierdzeniu po drugiej stronie, więc nie ma potrzeby łączenia. Oznacza to, że musisz scalić zmiany, zanim będziesz mógł push.
źródło
w takim przypadku możesz użyć siły z operacją wypychania
git push origin master --force
źródło
Nigdy nie rób
git -f
tego,push
ponieważ może to spowodować później katastrofalne konsekwencje.Musisz tylko zrobić
git pull
z lokalnego oddziału.Dawny:
a następnie zrób
git push
źródło
Musisz scalić i rozwiązać problem
conflicts locally
przed wprowadzeniem zmian do zdalnego repo / forka.1) ściągnij (pobierz i połącz)
2) Wprowadź zmiany
Nadal masz szybki wybór, aby
push
wymusić użycie--force
opcji, ale należy tego unikać, ponieważ może to spowodować utratę zmian lub niekorzystny wpływ na innych współtwórców.źródło