2010-12-28 15 views
16

Wciąż dostaję ten komunikat o błędzie z git podczas pchania, nawet próbuję go po wyciągnięciu kółko:Nie można wcisnąć do repozytorium git

 ! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to '[repo url]' 
To prevent you from losing history, non-fast-forward updates were rejected 
Merge the remote changes (e.g. 'git pull') before pushing again. See the 
'Note about fast-forwards' section of 'git push --help' for details.

Oto co dzieje oddział wygląda następująco:

A---B---C 
    | | 
    D E-F 

A initial commit (me) 
B some commit (me) 
C master 
D some commit (other dev) 
E remotes/origin/master - Merge branch 'master' of [repo url] 
F Local uncommitted changes, not checked into an index 

Od tego momentu, kiedy pociągam, nic nie nadchodzi. Kiedy popycham, pojawia się błąd. Jak mogę ponownie nacisnąć?

+0

Czy jest możliwe, że ktoś inny niż ty wprowadził zmiany, które usunęłyby wpisy ze starej historii, takie jak zgniatanie zatwierdzeń z bazą? – ismail

+0

Nie sądzę, że "inne dev", o którym mówię, ma wiedzę, aby to zrobić :) Ale jeśli tak, jak mogę się z tego wyrwać? –

+2

Chciałbym zmienić moje zmiany w niektórych plikach, wypróbować nowy klon git, zastosować zmiany z poprawką (1) i spróbować ponownie nacisnąć. – ismail

Odpowiedz

6

Przed pchnięciem musisz mieć wspólnego przodka, najprościej jest zrobić git pull (lub git pull --rebase, jeśli chcesz uniknąć scalania, a zmiana bazy nie jest problemem dla ciebie).

4

Rozwiązaniem problemu jest:

  1. „Commit” zmiany tak, że te są zobowiązane do lokalnego repozytorium.
  2. Następnie "Wyciągnij" kod z serwera github/git
  3. Następnie "Wepchnij" kod na serwer github/git i nie napotkasz żadnych problemów.

Czytaj więcej w dziale "pchanie się oddział" w następującym adresem URL:

Dealing with "non-fast forward rejects"

Nadzieję, że to pomaga.

Dzięki

5

miałem dokładnie ten problem, to ze względu na następujące kwestie:

Miejscowy oddział w moim komputerze (z różnym pochodzeniu), które nie zostały zaktualizowane (i został zmieniony przez innego użytkownika) . Musisz przejść do gałęzi, która nie została zaktualizowana (git checkout [gałąź, o której mowa]) i zrobić ciągnięcie git.

To rozwiązało mój problem. W tym konkretnym przypadku, z powodu tego komunikatu:

"! [Rejected] master -> master (non-fast-forward)!"

Musisz przejść do głównej gałęzi (mistrz egzekucji git), aby wykonać ciągnięcie git, a następnie wrócić do gałęzi, nad którą pracujesz (git checkout coBranch), a teraz powinieneś być w stanie wykonać push bez problemów.

Nie jestem pewien, dlaczego tak się dzieje; może być tak, że naturą git push jest sprawdzanie wszystkich lokalnych oddziałów, które nie są prawidłowo aktualizowane podczas wykonywania polecenia push.

Powiązane problemy