Otrzymuję tę wiadomość podczas wypychania do repozytorium github. Czy możesz mi powiedzieć krok po kroku, jak to naprawić? Pchnąłem tylko raz i udało się. Ale kiedy zaktualizowałem projekt i spróbowałem przesunąć moje drugie zatwierdzenie, wyświetla się komunikat „master odrzucony bez przewijania do przodu” i nie pozwala mi naciskać. Proszę wyjaśnić procedurę.
89
Odpowiedzi:
Miałem ten sam problem i udało mi się go naprawić. afk5min miał rację, problem polega na tym, że gałąź, z której pobrałeś kod, zmieniła się od tego czasu w zdalnym repozytorium. Zgodnie ze standardowymi praktykami git ( http://git-scm.com/book/en/Git-Basics-Working-with-Remotes ), musisz (teraz) scalić te zmiany w zdalnym repozytorium z lokalnymi zmianami przed może popełnić. Ma to sens, ponieważ zmusza Cię to do przyjęcia zmian innych i scalenia ich z kodem, zapewniając, że Twój kod będzie nadal działał z innymi zmianami w miejscu.
W każdym razie, przejdźmy do schodów.
Skonfiguruj „pobieranie”, aby pobrać gałąź, z której pierwotnie pobrano.
Pobierz zdalną gałąź.
Scal ten zdalny oddział z lokalnym oddziałem.
Zatwierdź (scal) zmianę w lokalnym repozytorium.
Prześlij zmianę do zdalnego repozytorium.
Szczegółowo...
W zaćmieniu otwórz widok „Repozytoria Git”.
Upewnij się, że widzisz swoje lokalne repozytorium i widzisz repozytorium zdalne jako podfolder. W mojej wersji nazywa się Remotes i wtedy widzę w nim zdalny projekt.
Poszukaj zielonej strzałki skierowanej w lewo, to jest strzałka „pobierz”. Kliknij prawym przyciskiem myszy i wybierz „Konfiguruj pobieranie”.
Powinieneś zobaczyć identyfikator URI, upewnij się, że wskazuje na zdalne repozytorium.
Zajrzyj do sekcji mapowania ref w wyskakującym okienku. Mój był pusty. To wskaże, które zdalne odniesienia chcesz pobrać. Kliknij „Dodaj”.
Wpisz nazwę gałęzi, którą chcesz pobrać ze zdalnego repozytorium. Mój był `` mistrzem '' (przy okazji, lista rozwijana tutaj byłaby świetna !!, na razie musisz to wpisać). Kontynuuj przez wyskakujące okienko, ostatecznie klikając „Zakończ”.
Kliknij „Zapisz i pobierz”. Spowoduje to pobranie zdalnego odniesienia.
Zajrzyj do folderu „Branches” w swoim lokalnym repozytorium. Powinieneś teraz zobaczyć tę zdalną gałąź w folderze zdalnym. Znowu widzę „mistrza”.
Kliknij prawym przyciskiem myszy lokalną gałąź w folderze „Lokalne” sekcji „Oddziały”, który nosi nazwę „master”. Wybierz „Scal”, a następnie wybierz oddział zdalny o nazwie „źródło / wzorzec”.
Przetwarzaj przez scalanie.
Zatwierdź wszelkie zmiany w swoim lokalnym repozytorium.
Prześlij zmiany do zdalnego repozytorium.
Idź na smaczny napój, gratulując sobie. Resztę dnia weź wolne.
źródło
Merge
w głównym, a następnie kliknij ponownie prawym przyciskiem myszy na projektpush branch Master
zadziałałW moim przypadku zaznaczyłem
Force Update
checkbox podczas pchania. Zadziałało jak urok.źródło
W międzyczasie (podczas aktualizacji projektu) do gałęzi „master” zostały wprowadzone inne zatwierdzenia. Dlatego musisz najpierw pobrać te zmiany, aby móc je wprowadzić.
źródło
Dotyczy Eclipse Luna + Eclipse Git 3.6.1
JA,
I napotkałem ten problem z EGit i oto jak go naprawiłem.
Tak, ktoś zatwierdził zmiany, zanim ja je zatwierdzę. Więc zmiany są odrzucane. Po tym błędzie zmiany zostaną faktycznie zatwierdzone do lokalnego repozytorium. Nie chciałem tylko
Pull
zmian, ponieważ chciałem zachować,linear history
jak wskazano w - W jakich przypadkach „git pull” może być szkodliwe?Więc wykonałem następujące kroki
projekt Git
Fetch from Upstream
- pobiera zdalne aktualizacje (odniesienia i obiekty), ale żadne aktualizacje nie są dokonywane lokalnie. aby uzyskać więcej informacji refer. Jaka jest różnica między „git pull” a „git fetch”?Rebase...
- to otwiera wyskakujące okienko, kliknij, abyPreserve merges during rebase
zobaczyć, dlaczegoCo dokładnie robi polecenie „rebase --preserve-scales” git (i dlaczego?)
Rebase button
conflict(s)
, przejdź do kroku 6, w przeciwnym razie krok 11Rebase Result
wyskakujące okienko, po prostu kliknijOK
file comparator
otworzy się, musisz zmodyfikowaćleft side file
.Git Staging
widokustage the changes
. to znaczyadd to index
Rebase
->Continue
. powtarzaj od 7 do 10, aż wszystkie konflikty zostaną rozwiązane.History
widoku wybierz wiersz zatwierdzenia i wybierzPush Commit
Rebase Commits of local.......
pole wyboru i kliknij dalej. zobacz dlaczego - Git: rebase na gałąź rozwojową z wyższego poziomuFinish
Uwaga: jeśli masz wiele zatwierdzeń lokalnego repozytorium, musisz zgnieść je w jednym zatwierdzeniu, aby uniknąć wielokrotnych połączeń.
źródło
Konfiguruj Po wysłaniu kodu, gdy otrzymasz odrzuconą wiadomość, kliknij konfiguruj i kliknij Dodaj specyfikację, jak pokazano na tym obrazku
Rozwiń i kliknij ref / heads / yourbranchname i ponownie kliknij Add Spec
Upewnij się, że wybrałeś wymuszoną aktualizację
Na koniec zapisz i prześlij kod do repozytorium
źródło
Otwórz widok git:
1 - wybierz swój projekt i wybierz scalanie 2 - Wybierz zdalne śledzenie 3 - kliknij ok
Git połączy zdalną gałąź z lokalnym repozytorium
4- następnie naciśnij
źródło
Ten błąd oznacza, że zdalne repozytorium miało inne zatwierdzenia i wyprzedziło twój lokalny oddział.
Próbuję zrobić git pull, a następnie git push. Jeśli nie ma żadnych sprzecznych zmian, git pull pobiera najnowszy kod do mojego lokalnego oddziału, zachowując moje zmiany nienaruszone.
Następnie git push wypycha moje zmiany do gałęzi głównej.
źródło
Odkryłem, że musisz być na najnowszym zatwierdzeniu gita. Oto kroki, które należy wykonać: 1) upewnij się, że nie pracowałeś na tych samych plikach, w przeciwnym razie napotkasz błąd DITY_WORK_TREE. 2) pobierz najnowsze zmiany. 3) zatwierdzaj aktualizacje.
Mam nadzieję że to pomoże.
źródło
źródło