Podczas uruchamiania otrzymuję następujące informacje git status
Your branch is ahead of 'origin/master' by 3 commits.
Przeczytałem w innym wpisie, jak to naprawić jest uruchamiane, git pull --rebase
ale czym dokładnie jest rebase, czy stracę dane, czy jest to prosty sposób synchronizacji z masterem?
git
git-rebase
FluxEngine
źródło
źródło
Odpowiedzi:
Otrzymujesz tę wiadomość, ponieważ wprowadziłeś zmiany w lokalnym systemie głównym i nie wypchnąłeś ich na odległość. Istnieje kilka sposobów, aby go „rozwiązać” i zwykle zależy to od tego, jak wygląda przepływ pracy:
git push origin
zakładając, że źródłem jest Twój pilotgit reset --hard origin/master
źródło
git diff master origin/master
(tj.git diff local remote
), Aby zobaczyć zmiany, które usunieszgit push origin master:branch
którego powróciłemEverything up-to-date
, wiadomość o wyprzedzeniu przez x zatwierdzeń zniknęła.Nie ma nic do naprawienia. Po prostu dokonałeś 3 zatwierdzeń i jeszcze nie przeniosłeś ich do zdalnego oddziału. Istnieje kilka opcji, w zależności od tego, co chcesz zrobić:
git push
: przenieś zmiany do pilota (może to zostać odrzucone, jeśli są już inne zmiany na pilocie)git pull
: pobierz zmiany (jeśli istnieją) z pilota i scal je ze swoimi zmianamigit pull --rebase
: jak wyżej, ale spróbuj powtórzyć swoje zatwierdzenia nad zdalnymi zmianamiJesteś w klasycznej sytuacji (chociaż zwykle w większości przepływów pracy nie poświęciłbyś dużo pracy masterowi). Oto, co normalnie zrobiłbym: Przejrzyj moje zmiany. Może zrób
git rebase --interactive
na nich kosmetyki, upuść te, które ssą, uporządkuj je, aby były bardziej logiczne. Teraz przenieś je do pilota za pomocągit push
. Jeśli zostanie to odrzucone, ponieważ mój lokalny oddział jest nieaktualny:git pull --rebase
powtórzyć moją pracę na podstawie najnowszych zmian igit push
jeszcze raz.źródło
your team lead merged to master
? Nie mówiłeś, że już naciskasz na opanowanie? Co zawiera dodatkowe zatwierdzenie? Spróbujgit diff origin/master
zobaczyć, jak Twój lokalny oddział różni się od zdalnego.Użyj tych 4 prostych poleceń
Krok 1 :
git checkout <branch_name>
To oczywiste, aby przejść do tej gałęzi.
Krok 2 :
git pull -s recursive -X theirs
Wprowadź zmiany w oddziale i zastąp je zmianami, jeśli wystąpi konflikt. Tutaj, jeśli to zrobisz
git status
, otrzymasz coś takiego, że twoja gałąź wyprzedza „origin / master” o 3 commity.Krok 3 :
git reset --hard origin/<branch_name>
Krok 4 :
git fetch
Twarde resetowanie oddziału.
Cieszyć się.
źródło
Pojawił się ten problem po scaleniu żądania ściągnięcia na Bitbucket.
Musiał zrobić
i to było to.
źródło
Zwykle, jeśli muszę sprawdzić, które są zatwierdzenia różniące się od wzorca, robię:
W ten sposób widzę zatwierdzenia i decyduję się je upuścić lub wybrać ...
źródło
git diff ...
magie nie działałyby. Kiedy to zrobiłem, dało minoop
to jedyne zatwierdzenie, a kiedy je zaakceptowałem, teraz moja gałąź jest zsynchronizowana z origin / master. Wygląda więc na to, że commits diff od origin / master były w rzeczywistości niczym.Ta wiadomość
git
oznacza, że dokonałeś trzech zatwierdzeń w lokalnym repozytorium i nie opublikowałeś ich wmaster
repozytorium. Poleceniem do uruchomienia jest togit push {local branch name} {remote branch name}
.Polecenie
git pull
(igit pull --rebase
) dotyczy innej sytuacji, gdy na zdalnym repozytorium istnieją zatwierdzenia, których nie ma w repozytorium lokalnym. Ta--rebase
opcja oznacza, żegit
przeniesie lokalne zatwierdzenie na bok, zsynchronizuje się ze zdalnym repozytorium, a następnie spróbuje zastosować trzy zatwierdzenia z nowego stanu. Może się nie powieść, jeśli wystąpi konflikt, ale wtedy pojawi się monit o ich rozwiązanie. Możesz także przerwać,rebase
jeśli nie wiesz, jak rozwiązać konflikty za pomocą,git rebase --abort
a wrócisz do stanu przed uruchomieniemgit pull --rebase
.źródło
Jeśli twój dupek mówi, że zatwierdzasz z wyprzedzeniem, to po prostu Pierwszy,
Aby upewnić się, że opublikowałeś wszystkie swoje najnowsze prace w repo
Następnie,
Aby zresetować i dopasować do repozytorium
źródło
Zdarzyło mi się to raz po tym, jak połączyłem żądanie ściągnięcia na Bitbucket.
Musiałem tylko:
git fetch
Mój problem został rozwiązany. Mam nadzieję, że to pomoże!!!
źródło
Wreszcie:
źródło