Випустіть новий код у Github


147

Я створив нове сховище на Github, яке має лише файл Readme.md.

У мене є нещодавно створений проект RoR, який я хотів перейти до цього сховища. Далі наведені команди, які я дав у своєму терміналі, щоб виконати це разом з помилкою, яку я отримую.

git remote add origin https://github.com/aniruddhabarapatre/learn-rails.git

Після цього я ввів своє ім’я користувача та пароль

git push -u origin master

Помилка ---

To https://github.com/aniruddhabarapatre/learn-rails.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/aniruddhabarapatre/learn-rails.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 merge the remote changes (e.g.,
hint: 'git pull') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Це перший раз, коли я пересилаю свій код у сховище Github, і я втрачаю помилки. Я шукав кілька інших запитань, які тут задаються, але жодне з них не виникло вперше.


Відповіді:


167

Коли ви створили свій сховище в GitHub , ви створили README.md , що є новим комітом .

Ваш місцевий сховище ще не знає про цю комісію. Звідси:

Оновлення було відхилено, оскільки пульт дистанційного керування містить роботу, яку ви не маєте локально.

Ви можете знайти наступну пораду:

Ви можете спочатку об'єднати віддалені зміни (наприклад, ' git pull'), перш ніж натиснути знову.

Це є:

git pull
# Fix any merge conflicts, if you have a `README.md` locally
git push -u origin master

3
Що я роблю, це спершу майстер походження git pull, а потім натисніть знову.
Bagusflyer

12
у деяких випадках ви можете отримати fatal: refusing to merge unrelated historiesв такому випадку, ви подаєте, git pull --allow-unrelated-histories origin masterа потім натискаєте відповідно до відповіді вище
TheLebDev

1
Не працює для мене. дистанційне: натиснення відхилено. віддалений: віддалений: refs / heads / master: ...: очікуване ім'я виконавця xxx, але знайдено yyy. Я роблю git config --global user.email yyy, і він все ще не розпізнає. Не можна нічого змусити. !!!
Baruch Atta

284

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

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

git push **-u** origin master

змінити так!

git push -f origin master

5
Це видалило мій файл readme, який я спершу поставив у github. Тепер схоже, що мені доведеться це зробити знову.
jack blank

3
ви можете просто додати попередження про те, що -f змушує натиснути і може зіпсуватись з часовою шкалою коду
ericksho

Це поганий спосіб, він викликав у мене проблему, він видалив readme, який не був створений мною, тепер я повинен зателефонувати обслуговуючому персоналу, сказати йому, що я дурний, вибачте створити прочитане мені знову. :(
Мохаммед Ельсаїд

62

⚡️ ЛЕГКО: Все, що вам потрібно, - це вимушений поштовх. Тому що ви, можливо, створили readme.mdфайл на Github і ще не витягнули його.

git push -f origin master

І ось GIF.

git push -f походження майстер

⚠️ BEWARE : Використання forceможе змінити історію для інших людей на той же проект. Якщо ви не переймаєтесь тим, що файл буде видалений для всіх, просто продовжуйте. Особливо, якщо ти єдиний розробник проекту.


1
Зауважте, цей підхід змінює історію змін, яку вже отримали інші користувачі цього сховища. git push -f origin masterце не велика звичка формувати.
Джонсонвев

1
Це рішення може вирішити натискання на фіксацію, але воно також видалить усі минулі зобов'язання !.
twenk11k

2
Остерігайтеся Github noobs ... Якщо ви створили Readme.md через GitHub, ця команда ВИДАЄТЬСЯ ЇЇ, оскільки вона підштовхує ваші нові зміни.
daCoda

Саме тому люди приземляються саме тут. -fтег видаляє файли і його слід використовувати обережно.
Ахмад

34

Виконайте примусовий поштовх за допомогою команди:

git push -f origin master

10
Зауважте, що це може видалити минулі коміти, які можуть бути або не
бажати

8

Якщо припустити, що ви додали файл Readme.md через інтерфейс, наданий github, readme ще не знаходиться у вашій локальній папці. Отже, коли ви намагаєтесь натиснути на віддалений репо, ви отримуєте помилку, тому що вашому місцевому репо не вистачає файлу readme - це "поза часом", так би мовити. Отже, як пропонується у повідомленні про помилку, спершу спробуйте "git pull". Це витягне readme з віддаленого сховища та об'єднає його з вашим локальним каталогом. Після цього у вас не повинно виникнути проблем із натисканням на віддалений репо (команди, які ви розмістили, виглядають для мене дійсними).


6

Це трапляється, коли ви намагаєтесь натиснути спочатку. Тому що у вашому репортажі GitHub є readMe.md або будь-яка інша річ, яка відсутня у вашому місцевому репо. По-перше, вам потрібно з’єднати непов’язану історію вашого github repo. Щоб це зробити

git pull origin master --allow-unrelated-histories

тоді ви можете отримати інші файли з репо (readMe.md або будь-який) за допомогою цього

git pull origin master

Після того

git push -u origin master

Тепер ви успішно переносите всі свої зміни в Github repo. Я не знаю git, але кожен раз, коли ці кроки працюють для мене.


5

Зважаючи на те, якщо ви не вносили змін протягом певного часу, можливо, це допоможе вам.

git add files
git commit -m "Your Commit"
git push -u origin master

Це працювало для мене, сподіваємось, це теж для вас.


3

якщо ви використовуєте git для mac в GUI, ви можете вибрати Respository-> Pull або "comm + shift + p", щоб спочатку "git pull", а потім опублікувати джерело.


3

Ця помилка виникає, коли ви натискаєте дані з локального каталогу у віддалене сховище git, виконавши наступну команду git: git push -u origin master

Оскільки файли локального каталогу та git віддаленого каталогу конфліктували.

Рішення:

Після створення всіх файлів для постановки, виконайте наведені нижче дії.

  1. Витягніть файли з віддаленого сховища як конфлікт із локальною робочою директорією.

    • git pull <remoter-url> <branch-name>
  2. Зробіть зміни знову.

    • git add -A
    • git commit -m ‘<comment>'
  3. Після скоєння файлів злиття з обома каталогами ви можете використовувати

    • git push -u origin master

Це виправить проблему. Дякую.


1

У мене була подібна проблема ... Я вирішив її так (я не експерт з git, тому я не знаю, чи це правильне рішення, але це працювало для мене):

git pull origin master --allow-unrelated-histories
git merge origin origin/master
git rm README.md
git commit -m 'removed readme.md'
git push origin master

0

Я боровся з цією помилкою більше години! Нижче - те, що допомогло мені вирішити. Все це, поки в моєму робочому каталозі було репо, яке я клонував у своїй системі.

Якщо ви робите додавання файлів до вашого наявного сховища ** 1. Я витягнув усе, що я додав до свого сховища, до своєї папки GitHub:

git pull


Вихід був - деякий файл readme file1 file2

  1. Я скопіював (перетягнув) свої нові файли (файли, які я хотів натиснути) до свого клонованого сховища (GitHub repo). Коли ви отримаєте це репо, ви повинні побачити свої старі та нові файли.

напр. деякі файли readme file1 file2 newfile1 newfile2

  1. git add "newfile1" "newfile2"

  2. [необов'язково] статус git, це гарантуватиме вас, якщо файли, які ви хочете додати, виконані належним чином або не було виводу


Про майстра відділення Ваша філія є в курсі "походження / майстра". Зміни, які слід вчинити: (використовуйте "git reset HEAD ..." до нестабільності)

    new file:   newfile1
    new file:   newfile2

5.git commit -m "будь-який опис, який ви хочете дати" 6.git push

І всі мої нові файли разом зі старими були помічені в моєму репо.


0

Простішою відповіддю є завантаження файлу README.MD з комп'ютера вручну в GitHub. Дуже добре працювали для мене.


0

Я використовую параметри "Відділення", а потім клацніть правою кнопкою миші на папці "віддалений / походження", а потім натисніть "видалити гілки з віддаленого", дивіться зображення нижче:

зображення


0

Я отримав цю помилку на Azure Git, і це вирішує проблему:

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