git: aktualizacje zostały odrzucone, ponieważ zdalny zawiera pracę, której nie masz lokalnie

Pracuję w zespole z kilkoma programistami używającymi Gita na BitBucket. Wszyscy pracujemy nad dev gałęzią, nie naciskając na master aż do wydania.

Jeden z deweloperów popełnił błędny kod, który przerobił mój własny przez przypadek, a teraz próbuję wypchnąć poprawny kod z powrotem do repo. Czytam o tym błędzie od kilku dni, nie mogę już naciskać na repo, ponieważ dostaję 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 otrzymuję konflikt scalający. Po wpisaniu Komunikatu o konflikcie merge, mój kod lokalny jest teraz błędnym kodem, który inny programista przesłał przez przypadek(zgodnie z oczekiwaniami z pull). Więc zamieniam nieprawidłowy kod z kopii zapasowej skopiowałem przed commiting, a kiedy próbuję wcisnąć ponownie, dostaję 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? Ja bym bardzo doceniam każdą pomoc.

Są to komendy, które uruchamiam, aby zatwierdzić, jeśli to komuś 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

Myślałem, że jeśli utrzymam ten rozkaz, nie otrzymam konfliktów scalonych. Chyba się myliłem. Thanks again

Update: Dodam, że od kilku godzin szukałem w Google i stackoverflow i postępowałem zgodnie z różnymi instrukcjami, ale nadal nie mogę push do gałęzi dev.

Author: Himanshu, 2014-06-23

7 answers

git pull <remote> master:dev pobierze remote/master gałąź i połączy ją z Twoją local/dev gałąź.

git pull <remote> dev pobierze gałąź remote/dev i połączy ją z bieżącą gałąź.

Myślę, że powiedziałeś, że konfliktowy commit jest na remote/dev, więc to jest gałąź, którą prawdopodobnie zamierzałeś pobrać i połączyć.

W takim przypadku, nie łączyłeś konfliktu w lokalną gałąź, co jest trochę dziwne, ponieważ powiedziałeś, że widziałeś niepoprawny kod w swojej roboczej kopii. Może chcesz sprawdzić co dzieje się w remote/master.

 21
Author: Jeff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-23 02:45:01

Użyj tego polecenia w Terminalu

Git push - f origin master

 27
Author: Donal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-13 07:46:51

Dzieje się tak, gdy próbujemy wcisnąć do zdalnego repozytorium, ale na zdalnym utworzyliśmy nowy plik, który nie został jeszcze wyciągnięty, powiedzmy Readme. W takim przypadku, jak mówi błąd

Git odrzuca aktualizację

Ponieważ nie mamy aktualizacji zdalnego w naszym lokalnym środowisku. Więc najpierw ściągnij z pilota

git pull

Zaktualizuje lokalne repozytorium i doda nowy plik Readme. Następnie wypchnij zaktualizowane zmiany do zdalnego

git push origin master
 12
Author: Himanshu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-27 14:29:15

Naprawiłem to, nie jestem do końca pewien, co zrobiłem. Próbowałem po prostu naciskać i ciągnąć za pomocą:

git pull <remote> dev zamiast git pull <remote> master:dev

Mam nadzieję, że to pomoże komuś, jeśli ma ten sam problem.

 5
Author: delos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-12 07:49:47

Miałem ten błąd i to dlatego, że nie było aktualizacji na serwerze, ale SourceTree nie pokazywał żadnych dostępnych aktualizacji(prawdopodobnie dlatego, że byłem offline, gdy Ostatnio sprawdzane). Więc zrobiłem odświeżenie w drzewie źródłowym i teraz pokazuje 2 elementy do wypchnięcia zamiast 1 elementu.

Więc koniecznie naciśnij odśwież lub ciągnij Jeśli pojawi się ten błąd, a następnie spróbuj ponownie.

 2
Author: 1.21 gigawatts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-10 22:25:37
     Well actually github is much simpler than we think and absolutely it happens whenever we try to **push** even after we explicitly inserted some files in our git repository so, in order to fix the issue simply try..

: git pull

I wtedy..

: git push

Uwaga: Jeśli przypadkowo utknąłeś w edytorze vim po wyciągnięciu repozytorium, nie martw się po prostu zamknij edytor vim i spróbuj push:)

 2
Author: Deep Chudasama,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-23 05:49:02

Musisz wprowadzić:

$ git pull
$ git fetch 
$ git merge

Jeśli użyjesz git push origin master --force, będziesz miał duży problem.

 -1
Author: gaoyehua,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-19 09:45:25