Github "Оновлення було відхилено, оскільки пульт містить роботу, якої у вас немає"


176

Я створив нове репо, клонував його, додав файли до каталогу, додав їх add -A, здійснив зміни, і коли я намагаюся натиснути за допомогою, git push <repo name> masterя отримую "Оновлення відхилено, оскільки пульт містить роботу, якої у вас немає".

Це, мабуть, не має сенсу, оскільки це нове репо, і містить лише файл readme.

Відповіді:


308

Це відбувається, якщо ви ініціалізували нове рефінансування github з READMEта / або LICENSEфайлом

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

Тепер ви зможете підштовхнути ваше сховище до github. По суті, ви повинні об'єднати ці нові ініціалізовані файли зі своєю роботою. git pullвитяги і злиття для вас. Ви також можете взяти та злити, якщо це вам підходить.


7
Я створив відео YouTube з більш детальним поясненням та двома запропонованими способами уникнути цієї проблеми в першу чергу.
Кевін Маркхем

16
Для команди злиття мені потрібно використовуватиgit pull origin master --allow-unrelated-histories
Luciano Marqueto

Я отримую "фатальний: відмова від об'єднання
Сергі

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

101

Помилка, можливо, виникає через різну структуру коду, який ви здійснюєте, і який присутній у GitHub. Це створює конфлікти, які можна вирішити

git pull

Вирішення конфліктів вирішення:

git push

Якщо ви підтвердите, що ваш новий код все добре, ви можете скористатися:

git push -f origin master

Там, де -fрозшифровується слово "примусити".


13
'git push -f origin master' - це допомагає
Saurabh

4
git push -f переписує віддалену історію з вашою локальною історією, будьте обережні при її використанні. Особливо на публічних сховищах.
Андре

updates-were-rejectedтакож трапляється, якщо ви змінили github repo у віддаленому режимі, наприклад: внесли деякі зміни у файл readme за допомогою github gui. А потім спробувавши підштовхнути вашу нову роботу до github, вона покаже це повідомлення про те, що зміни, які ви внесли в віддалений, але локально відсутні.
Дек

13

Якщо це ваш перший поштовх

просто змінити

git push <repo name> master

змінити так!

git push -f <repo name> master

1
Це відкидає файли, як спочатку створені в початковому файлі. Замість цього скористайтеся попередньою git pullформою, щоб отримати віддалені файли та об'єднати свої комісії. Так само, як у прийнятій відповіді зазначено
JayJay

@jayjaybricksoft Дякую за Ваш коментар. Це перший поштовх, тому заміна вихідних файлів - ОК.
Махяр


2

Надані відповіді не працювали для мене.

У GitHub у мене було порожнє репо з лише файлом ЛІЦЕНЗІЇ та однократною локальною фіксацією. Що працювало:

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

Також перед тим, як mergeвам захочеться:

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

0

Я дотримувався цих кроків:

Витягніть майстра:

git pull origin master

Це синхронізує ваше локальне репо з рето Github. Додайте новий файл, а потім:

git add .

Внести зміни:

git commit -m "adding new file  Xyz"

Нарешті, натисніть на початковий код:

git push origin master

Оновіть репортаж Github, ви побачите щойно додані файли.


0

Якщо ви використовуєте Visual S2019, створіть нову локальну гілку, як показано нижче, а потім натисніть зміни на репо Місцевий відділення VS2019

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.