Pracuję w zespole z kilkoma programistami używającymi git na BitBucket. Wszyscy pracujemy nad dev
gałęzią, nie pchając się master
aż do wydania.
Jeden z programistów popełnił nieprawidłowy kod, który przez przypadek nadpisał mój własny, a teraz próbuję odesłać poprawny kod z powrotem do repozytorium. Od kilku dni czytam o tym błędzie, nie mogę już pushować do repozytorium, ponieważ pojawia się następujący błąd:
! [rejected] master -> dev (fetch first)
error: failed to push some refs to 'https://[email protected]/repo_user/repo_name.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Postępuję zgodnie z instrukcjami i pull
, ale wtedy pojawia się konflikt scalania. Po wpisaniu komunikatu o konflikcie scalania mój kod lokalny jest teraz nieprawidłowym kodem, który inny programista przesłał przez przypadek (zgodnie z oczekiwaniami pull
). Więc zastępuję niepoprawny kod kopią zapasową, którą skopiowałem przed zatwierdzeniem, a kiedy próbuję ponownie wcisnąć, pojawia się ten sam błąd.
To naprawdę frustrujące, naprawdę chcę pomóc mojemu zespołowi i wnieść swój wkład, ale nie mogę z powodu tego błędu. Czy ktoś wie, jak rozwiązać ten problem? Byłbym bardzo wdzięczny za każdą pomoc.
Oto polecenia, które wykonuję, aby zatwierdzić, jeśli komuś to pomoże:
git pull remotename master:dev
git add --all
git commit -m "some message"
git pull remotename master:dev
git push remotename master:dev
Pomyślałbym, że jeśli zachowam tę kolejność, nie otrzymam konfliktów scalania. Chyba się myliłem. Dzięki jeszcze raz
Aktualizacja: dodam, że przez kilka godzin szukałem w Google i stackoverflow i postępowałem zgodnie z różnymi instrukcjami, ale nadal nie mogę push
do dev
oddziału.
git pull --rebase
.Użyj tego polecenia w terminalu
źródło
Dzieje się tak, gdy próbujemy wypchnąć do zdalnego repozytorium, ale utworzyliśmy nowy plik na zdalnym, który nie został jeszcze ściągnięty, powiedzmy
Readme
. W takim razie jak mówi błądponieważ nie pobraliśmy zaktualizowanego pilota w naszym środowisku lokalnym. Więc najpierw wyciągnij z pilota
Zaktualizuje lokalne repozytorium i doda nowy
Readme
plik. Następnie wypchnij zaktualizowane zmiany do pilotaźródło
git pull origin develop
w mojej lokalnej branży deweloperskiej, ale teraz, po prostugit pull
to działa dobrze, nie wiem dlaczego.git pull
wystarczyZwykle dzieje się tak, gdy repozytorium zawiera elementy, których nie ma lokalnie. Aby więc wprowadzić nasze zmiany, w tym przypadku musimy zintegrować zdalne zmiany, a następnie nacisnąć.
Więc stwórz przyciąganie ze zdalnego
Następnie wprowadź zmiany do tego pilota
źródło
Siła do pchania
git push -f wzorzec pochodzenia
źródło
Naprawiłem to, nie jestem do końca pewien, co zrobiłem. Próbowałem po prostu pchać i ciągnąć za pomocą:
git pull <remote> dev
zamiastgit pull <remote> master:dev
Mam nadzieję, że to pomoże komuś, jeśli ma ten sam problem.
źródło
Musisz wprowadzić:
Jeśli używasz
git push origin master --force
, będziesz miał duży problem.źródło
git fetch
igit merge
ponownie ręcznie po uruchomieniu,git pull
które je zawiera ?Możesz spróbować tego:
git pull origin master --rebase
źródło
Cóż, w rzeczywistości github jest znacznie prostszy niż nam się wydaje i absolutnie dzieje się tak, gdy próbujemy push, nawet po jawnym wstawieniu niektórych plików do naszego repozytorium git, więc aby naprawić problem, po prostu spróbuj ...
: git pull
i wtedy..
: git push
Uwaga: jeśli przypadkowo utkniesz w edytorze vim po ściągnięciu repozytorium, nie martw się, po prostu zamknij edytor vim i spróbuj wypchnąć :)
źródło
Wykonałem poniższe kroki. wreszcie działa dobrze.
Kroki
1) git init
2) status git (do sprawdzania statusu)
3) dodaj git. (dodaj cały plik zmian (.))
4) git commit -m
"<pass your comment>"
5) zdalne dodać pochodzenie git
"<pass your project clone url>"
6) git pull --allow-unrelated-histories
"<pass your project clone url>"
master7) git push -u
"<pass your project clone url>"
masterźródło
Miałem ten błąd, a to dlatego, że na serwerze była aktualizacja, ale SourceTree nie pokazywał żadnych dostępnych aktualizacji (prawdopodobnie dlatego, że byłem offline, kiedy ostatnio sprawdzałem). Zrobiłem więc odświeżenie w drzewie źródłowym i teraz pokazuje 2 elementy do wypchnięcia zamiast 1 elementu.
Więc pamiętaj, aby nacisnąć odśwież lub wyciągnąć, jeśli pojawi się ten błąd, a następnie spróbuj ponownie.
źródło
Ostrzeżenie git push -f origin master
źródło
Błąd prawdopodobnie wynika z innej struktury kodu, który zatwierdzasz i który jest obecny w GitHub. Możesz zapoznać się z: Jak radzić sobie z błędem „ odmowy scalania niepowiązanych historii ”:
źródło
Najlepsza opcja dla mnie i działa i jest prosta
git pull --rebase
następnie
git push
powodzenia
źródło
Oto jak rozwiązałem ten problem:
git pull origin master
git push origin master
Zwykle dzieje się tak, gdy zdalna gałąź nie jest aktualizowana. A potem, jeśli pojawi się błąd typu „Proszę wprowadzić wiadomość dotyczącą zatwierdzenia”, odnieś się do tego (dla mnie odpowiedź xiaohu Wang działała :))
źródło
Najpierw miałem projekt SSDT VS. Chciałem przekazać projekt na Github, tak jak miałem. Chciałem, aby ten push był początkową wersją mojego repozytorium rozpoczynającą gałąź główną. Sugestia Donala dotycząca git push -f origin master była najłatwiejszym sposobem (jaki widziałem), aby to osiągnąć. Ponieważ nie musiałem się martwić o ponowne napisanie czegokolwiek, wydawało się to mieć sens.
źródło
Miałem ten sam problem. Zdarzyło się, że utworzyłem plik .Readme w repozytorium bez wcześniejszego ściągania go.
Możesz usunąć plik .Readme lub wyciągnąć go przed wypchnięciem.
źródło
możesz użyć
pomoże to w przypadku, gdy niektóre zmiany nie zostały jeszcze zarejestrowane w lokalnym repozytorium. szczególnie
README.md
źródło