Я новичок в GitHub . Сегодня я столкнулся с проблемой, когда пытался перенести свой код на GitHub.
Pushing to git@github.com:519ebayproject/519ebayproject.git
To git@github.com:519ebayproject/519ebayproject.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:519ebayproject/519ebayproject.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Я еще ничего не помещал в репозиторий, так зачем мне что-то тянуть?
Ответы:
Если вы не хотите объединять удаленную ветку с вашей локальной веткой (см. Различия с git diff ) и хотите сделать принудительное push, используйте команду push с -f
где
origin
имя вашего удаленного репо.источник
$ git pull origin master -v
но это дает ошибкуfatal: refusing to merge unrelated histories
. Затем я попробовал это, и это сработало, и мои локальные файлы появились на github remote repo.Как говорится в сообщении,
Используйте
git pull
для загрузки последних изменений из удаленного репозитория в локальный репозиторий. В этом случае для извлечения изменений потребуется слияние, поскольку вы внесли изменения в локальный репозиторий.Я приведу пример и картинку, чтобы объяснить. Давайте предположим, что ваше последнее извлечение из источника / ветви было в коммите Б. Вы завершили и совершили некоторую работу (Фиксация С). В то же время кто-то еще завершил свою работу и отправил ее в источник / ветвь (Commit D). Там должно быть слияние между этими двумя ветвями.
Поскольку вы - тот, кто хочет подтолкнуть вас, Git заставляет вас выполнить слияние. Для этого вы должны сначала вытащить изменения из источника / ветви.
После завершения слияния вам будет разрешено быстро переместиться в начало / ветку к коммиту E, нажав на ваши изменения.
Git требует, чтобы вы обрабатывали слияния самостоятельно, потому что слияние может привести к конфликтам.
источник
git pull
тоже напечатаноAlready up-to-date
. Оказалось, что я был не в ветке, хотя я был, а в отдельной ветке HEAD (возможно, из-за неудачного слияния?). Это было очевидно после бегаgit branch
. После запускаgit checkout mybranch
все заработало как положено.Вы обновили свой код перед нажатием?
Используйте,
git pull origin master
прежде чем что-то толкать.Я предполагаю, что вы используете
origin
в качестве имени для вашего пульта.Вам нужно потянуть перед push, чтобы ваш локальный репозиторий обновлялся до того, как вы что-то добавили (на тот случай, если кто-то другой уже обновил код
github.com
). Это помогает в разрешении конфликтов на местном уровне.источник
git pull origin master
'origin' does not appear to be a git repository
git remote --verbose
чтобы увидеть все пульты, настроенные в вашей папке git. Информация, отображаемая на экране, также будет включать в себя пути «git@github.com» или HTTPS, по которым вы сможете определить, куда нажать. Надеюсь это поможет !git pull origin master
Показано уже актуально. но затем, когда попытаетесь нажать на origin_branch, произнесите то же самое предупреждение, упомянутое в вопросе. Любое предложение !!git push -f <remote> <branch>
например , мерзавец толчок начало <your_local_branch> проверить эту нить .Обычно это происходит, когда вы
git commit
иgit push
раньше пытались внести измененияgit pulling
в ту ветку,x
где кто-то другой уже внес изменения.Нормальный поток будет как ниже,
ШАГ 1 :
git stash
ваши локальные незафиксированные изменения в этой ветке.ШАГ 2 :
git pull origin branch_name -v
кpull and merge
(локально совершенных изменений на этой ветке . Дать этому Слить какое - то сообщение, и исправить конфликты если таковые имеются )ШАГ 3 :
git stash pop
этиstash
изменения (ED Тогда вы можете сделать коммиты на Popped файлов , если вы хотите или нажать уже совершенные изменения (step4) первыми и сделать новое обязательство файлов позже. )ШАГ 4 :
git push origin branch_name -v
объединенные изменения.Заменить
branch_name
наmaster
(дляmaster
ветки).источник
commit
? Если вы не делаете свои изменения послеstash pop
?Первое и простое решение (не рекомендуется)
git push -f origin master
.Рекомендуемое решение
Если это не сработает, следуйте 🔰
.git
каталог из папки.Затем выполните эти команды:
ИЛИ
Используйте только
git push -f origin master
если-u
не работает для вас.Это решит практически любые ошибки, возникающие при загрузке ваших файлов.
источник
Иногда мы забывали тянуть и делали много работ в местной среде.
Если кто-то хочет нажать без тяги,
работает. Это не рекомендуется при работе с другими людьми, но когда ваша работа - это простая вещь или личный игрушечный проект, это будет быстрое решение.
источник
reset --hard
коммит для более старого коммита, а затем сделал еще пару. Тогда я просто хотел,push
но удаленный репо не был готов позволить мне. WarrenP может на самом деле помочь учащимся, будучи менее руническим. Может быть, он не хочет.Некоторые из вас могут получить эту ошибку, потому что Git не знает, какую ветку вы пытаетесь нажать.
Если ваше сообщение об ошибке также включает
тогда вы можете последовать полезным советам Джима Кубичека « Настроить Git только на Push Current Branch» , чтобы установить текущую ветку по умолчанию.
источник
Это сработало для меня - команда
git pull origin branch_name --rebase
сначала извлечет изменения из удаленного имя_в ветви, затемrebase
текущая ветка сверху.источник
В дополнение к ответам выше, у меня сработало следующее: -
Сценарий -
Решение -
источник
--all
флаг.У меня была та же проблема, что я сделал, я сначала толкнул его с помощью этого
Я сделал это после того, как зафиксировал файлы и получил сообщение об ошибке. Он зафиксировал все файлы и подтолкнул их. Затем в следующий раз, когда я толкал на github. Я сделал то, что он просил меня, и тогда все было в порядке. Надеюсь, что это работает для вас тоже :)
источник
git push --set-upstream origin master --force
Я упоминал об этом в моем уроке Как использовать GitHub: учебник для начинающих .
Когда вы создаете новый репозиторий на GitHub, GitHub может попросить вас создать файл readme. Если вы создаете файл readme непосредственно на GitHub, то вам нужно сначала сделать запрос «pull», прежде чем запрос «push» будет успешным. Эти команды будут «извлекать» удаленный репозиторий, объединять его с текущими файлами, а затем «отправлять» все файлы обратно в GitHub:
источник
Я получил вышеупомянутое сообщение об ошибке, когда я пытался протолкнуть мою текущую ветку
foobar
:Оказывается, у меня было две локальные ветви, отслеживающие одну и ту же удаленную ветку:
Для меня это помогло протолкнуть мою текущую ветку, используя:
... и очистить с
git branch -d
источник
git push -f origin фирменное имя
Используйте приведенную выше команду только в том случае, если вы уверены, что вам не нужен код удаленной ветви, в противном случае сначала выполните слияние, а затем нажмите код
источник
Если вы не хотите вмешиваться в ваш текущий проект (и, возможно, сталкиваетесь с конфликтами слияний, которые не хотите решать), и не хотите создавать другую ветку (это будет утомительно для управления другой веткой), и вы не хотите не хочу делать какие-либо рискованные и постоянные
force
команды git (которые даже после прочтения того, что они делают, меня часто удивляют последствия этого).Решение . Можно просто перетащить содержимое вашей папки в другую папку, перетащить проект в уже пустую папку, перетащить извлеченное содержимое в корзину, а затем перетащить нужный проект обратно в папку. Вы должны уметь правильно толкать и получать желаемые результаты. Мне буквально требуется меньше 10 секунд, чтобы сделать это.
Людям, которые говорят мне, что это неправильно, не ссылаясь на какие-либо последствия, или людям, которые говорят мне использовать команду, которая вызывает у меня раздражение в будущем, я говорю: «Этот метод буквально занимает у меня менее 10 секунд». Если я столкнусь с командой git, для реализации которой требуется менее 10 секунд и которая будет иметь точно такой же эффект, я ее приму. До тех пор я использую этот метод.
Недостатком этого метода является то, что ваша история коммитов будет выглядеть линейной, когда вы фактически объединитесь в ветке без документирования слияния. Это может быть не лучшим методом при работе с группами. Работайте на ветках в таких случаях!
источник
Просто была та же проблема, но в моем случае я набрал не ту ветку на пульте. Так что, похоже, это еще один источник этой проблемы ... дважды проверьте, что вы нажимаете на правильную ветку.
источник
У меня возникла та же проблема, и оказалось, что я нахожусь в другой (локальной) ветке, чем я думал, И правильная локальная ветвь была в коммитах с удаленного компьютера.
Мое решение: проверить правильную ветку, cherry-выбрать коммит из другой локальной ветки, git pull и git push
источник
У меня была похожая проблема, и оказалось, что мой рабочий процесс для поддержания моей ветки в актуальном состоянии был виноват. Я делал следующее:
В моем местном "хозяине"
потом обратно в мой местный филиал
Это работало хорошо для предыдущего потока git, но не с github. Здесь
git rebase
была проблема, вызывающая проблемы с синхронизацией (и я признаю, что я должен был принять это без полного понимания), и, к сожалению, поставил меня в положение, когда этоgit push -f
стало, вероятно, самым легким вариантом. Фигово.Мой новый поток - обновить ветку напрямую, используя
git merge
следующее:В моем местном филиале
Нет перемотки вперед, так как я внес изменения в местном отделении.
Как вы, вероятно, можете сказать, я не эксперт по git, но я достоверно проинформирован, что этот рабочий процесс, вероятно, позволит избежать конкретных проблем, которые у меня были.
источник
В моем случае я проверил «mybranch» и сделал
git pull
, поэтому я не мог понять, почему толчок не работал. В конце концов я понял, что нажимаю не на ту ветку. Я печаталgit push origin master
вместоgit push origin mybranch
.Так что, если вы уже сделали
git pull
и все еще получаете это сообщение, убедитесь, что вы нажимаете правильную ветвь.источник
Имя вашей ветви совпадает с именем удаленной ветви?
Если нет, вы должны извлечь новую ветку с тем же именем, что и у удаленной ветви, и попробовать нажать ее снова.
Предположим, что удаленная ветвь, которую вы хотите отправить, - это [ тестирование ], а ваша локальная ветвь называется [ тест ].
Если вы не в тестовой ветке, сначала переключитесь на нее.
Затем откройте новую ветку и назовите ее test .
Теперь пришло время подтолкнуть его:
источник
$git branch -M <new_name>
чтобы переименовать местную ветку.Я решил эту проблему в своем GIT-хранилище. Нет необходимости
rebase
илиforce
совершать в этом случае. Используйте следующие шаги, чтобы решить эту проблему -надеюсь, это поможет.
источник
Другое решение - продвинуть голову пульта, сделав еще один коммит, если можете. После того, как вы вытянете эту продвинутую голову в локальное поддерево, вы сможете снова оттолкнуться от нее.
источник
Я получал похожую ошибку при отправке последних изменений в пустой репозиторий Git, который я использую для gitweb . В моем случае я не вносил никаких изменений в пустой репозиторий, поэтому я просто удалил свой пустой репозиторий и снова клонировал:
источник
Если вы уверены, что никто не внес изменения в ваш репозиторий git и что вы работаете над последней версией,
git pull
это не имеет смысла как решение в вашем сердце ...Тогда это, вероятно, то, что произошло, вы использовали
git commit --amend
Учебник ATLASSIAN: переписывание истории
Однако не рекомендуется выполнять,
git commit --amend
если вы уже передали коммит в GitHub , это потому, что «внесение изменений не просто изменяет самый последний коммит - оно полностью его заменяет. Для Git это будет выглядеть как новый коммит» Это означает, что для другого разработчика на вашем GitHub история выглядит как A-> B-> C, но для вас она выглядит как A-> B-> D, если GitHub позволит вамpush
, все остальные должны будут вручную исправить свою историюЭто причина, по которой вы получаете сообщение об ошибке
! [rejected] master -> master (non-fast-forward)
, если вы знаете, что никто не потянул ваши последние изменения, вы можете это сделатьgit push --force
, это изменит историю мерзавцев в вашем публичном репо . В противном случае ... вы можете выполнитьgit pull
, но я верю, что это будет иметь такой же результат, как вы не прошлиgit commit --amend
пройдя, он создаст новый коммит (то есть: история git после git pull: A-> B-> C-> D )для более подробной информации: как изменить ваш последний коммит
источник
Другой вариант: локально переименовать вашу ветку на что-то новое.
После этого вы сможете отправить его в удаленный репозиторий, например, если это ваш способ сохранить копию (резервную копию) и убедиться, что ничего не потеряно.
Вы можете извлечь удаленную ветку, чтобы иметь локальную копию, и изучить различия между (i) тем, что было у удаленного (со старым именем ветви) и (ii) тем, что у вас есть (с новым именем ветки), и решить, что делать , Так как вы не знали о различиях пульта ДУ (отсюда и проблема), просто слияние или форсирование изменений где-то слишком жестоко.
Посмотрите на различия, выберите, над какой веткой вы хотите работать, выберите вишню изменения, которые вы хотите из другой ветви, или отмените изменения, которые вы не хотите, в своей ветви и т. Д.
Тогда вы сможете решить, хотите ли вы перенести вашу чистую версию на пульт, добавить новые изменения или что-то еще.
источник
Проблема с командой push состоит в том, что ваш локальный и удаленный репозиторий не совпадает. Если вы инициализируете readme по умолчанию при создании нового репозитория из git hub, то основная ветка создается автоматически. Тем не менее, когда вы пытаетесь нажать, что не имеет никакой ветви. Вы не можете нажать ... Итак, лучшая практика - создавать репо без инициализации readme по умолчанию.
источник
Эта проблема обычно вызывается созданием файла readme.md, который считается коммитом, не синхронизируется локально в системе и отсутствует за головой, следовательно, он показывает запрос git pull. Вы можете попытаться избежать файла readme, а затем попытаться зафиксировать. Это сработало в моем случае.
источник
Еще одна причина этой проблемы (видимо, не так часто) ...
Мой сервер отстал ~ 12 часов, когда я сделал толчок
Я настроил NTP на сервере SYNC мои часы.
Я выполнил новый git push, который привел к ошибке, обсуждаемой в этом посте.
источник
Если по какой-либо причине
git pull
печатается,Already up-to-date
вы можете проверить глобальный параметр gitpush.default
(In~/.gitconfig
). Установите это,simple
если это было вmatching
. Ниже ответ объясняет, почему:Git - В чем разница между push.default "соответствие" и "простой"
Кроме того, стоит проверить, не устарело ли ваше местное отделение,
git remote show origin
и при необходимости выполнить проверку.источник
Используйте
git pull https://github.com/username/repository
это потому, что Github и удаленные репозитории не синхронизированы. Если вы сделаетеpull
репозиторий, тоPush
все будет синхронизировано и ошибка исчезнет.`
источник
git pull
Уже печатаетup-to-date
решение:
Вы можете создать репозиторий / проект на удаленном сервере (сервер) и добавить туда некоторый файл, затем снова создать папку в локальном и инициализированном git
git init
- это ошибка , вы не должны создаватьgit init
в локальном, а вместо этого клонировать проект в свой локальный с помощьюgit clone
затем потяните
источник