Github „Aktualizacje zostały odrzucone, ponieważ pilot zawiera pracę, której nie masz”


176

Utworzyłem nowe repozytorium, sklonowałem je, dodałem pliki do katalogu, dodałem je add -A, zatwierdziłem zmiany, a kiedy próbuję wypchnąć za pomocą git push <repo name> master, otrzymuję komunikat „Odrzucono aktualizacje, ponieważ pilot zawiera pracę, której nie masz”.

Wydaje się, że nie ma to sensu, ponieważ jest to nowe repozytorium i zawiera tylko plik readme.

Odpowiedzi:


308

Dzieje się tak, jeśli zainicjowałeś nowe repozytorium github za pomocą READMEi / lub LICENSEpliku

git remote add origin [//your github url]

//pull those changes

git pull origin master 

// or optionally, 'git pull origin master --allow-unrelated-histories' if you have initialized repo in github and also committed locally

//now, push your work to your new repo

git push origin master

Teraz będziesz mógł przenieść swoje repozytorium na github. Zasadniczo musisz scalić te nowe zainicjowane pliki ze swoją pracą. git pullpobiera i łączy dla Ciebie. Możesz także pobierać i scalać, jeśli Ci odpowiada.


7
Stworzyłem film na YouTube z bardziej szczegółowym wyjaśnieniem i dwoma sugerowanymi sposobami uniknięcia tego problemu w pierwszej kolejności.
Kevin Markham

16
Do polecenia scalenia potrzebujęgit pull origin master --allow-unrelated-histories
Luciano Marqueto

Dostaję „fatalny: odmowa połączenia niepowiązanych historii”
Sergi

4
@Sergi trygit pull origin master --allow-unrelated-histories
palerdot

101

Błąd prawdopodobnie wynika z innej struktury kodu, który zatwierdzasz i który jest obecny na GitHub. Tworzy konflikty, które można rozwiązać

git pull

Rozwiązywanie konfliktów scalania:

git push

Jeśli potwierdzisz, że nowy kod jest w porządku, możesz użyć:

git push -f origin master

Gdzie -foznacza „wymuszone zatwierdzenie”.


13
„git push -f origin master” - to pomaga
Saurabh

4
git push -f nadpisuje zdalną historię twoją lokalną historią, zachowaj ostrożność podczas jej używania. Szczególnie w repozytoriach publicznych.
Andre

updates-were-rejectedzdarza się również, jeśli dokonałeś zmian w repozytorium github w pilocie, na przykład: dokonałeś pewnych zmian w pliku readme za pomocą github gui. A potem próbowałeś wypchnąć twoją nową pracę na github, pokaże tę wiadomość mówiącą, że zmiany, które wprowadziłeś zdalnie, ale nie są obecne lokalnie.
Deke

13

Jeśli to twój pierwszy krok

po prostu zmień

git push <repo name> master

zmień to w ten sposób!

git push -f <repo name> master

1
Spowoduje to odrzucenie plików, które zostały pierwotnie utworzone w źródle. Raczej użyj git pullprzed, aby pobrać zdalne pliki i scalić wtedy swoje zatwierdzenie. Tak jak
podano

@jayjaybricksoft Dziękujemy za komentarz. Jest to pierwsze naciśnięcie, więc zastąpienie plików źródłowych jest w porządku.
Mahyar,


2

Podane odpowiedzi nie zadziałały dla mnie.

Miałem puste repozytorium na GitHubie z tylko plikiem LICENCJA i pojedynczym zatwierdzeniem lokalnym. Co zadziałało, to:

$ git fetch
$ git merge --allow-unrelated-histories
Merge made by the 'recursive' strategy.
 LICENSE | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
 create mode 100644 LICENSE

Zanim mergeteż zechcesz:

$ git branch --set-upstream-to origin/master
Branch 'master' set up to track remote branch 'master' from 'origin'.

0

Wykonałem następujące kroki:

Pociągnij mistrza:

git pull origin master

Spowoduje to zsynchronizowanie lokalnego repozytorium z repozytorium Github. Dodaj nowy plik, a następnie:

git add .

Zatwierdź zmiany:

git commit -m "adding new file  Xyz"

Na koniec wypchnij wzorzec pochodzenia:

git push origin master

Odśwież swoje repozytorium Github, zobaczysz nowo dodane pliki.


0

Jeśli korzystasz z programu Visual S2019, utwórz nową gałąź lokalną, jak pokazano na poniższym rysunku, a następnie prześlij zmiany do repozytorium Oddział lokalny VS2019

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.