Почему я получаю ошибку: не удалось нажать некоторые ссылки?
У меня есть удаленный репозиторий git и локальный, с которым я работаю. Всякий раз, когда я делаю какие-либо изменения локально, я нажимаю их на пульт. Затем я когда-нибудь делаю "git commit" на удаленном, чтобы сохранить изменения в удаленных файлах.
Я не редактирую удаленный репозиторий напрямую. Я просто фиксирую изменения. И я один разработчик, никто больше не работает над этими репозиториями.
Почему я получаю ошибку, которая, из того, что я знаю, означает, что я должен сначала вытащить?
Я не хочу тянуть, потому что файлы удаленных репозиториев устарели, и он потеряет мои локальные изменения. Это действительно раздражает, почему это происходит? И как я могу исправить без необходимости вытягивать или воссоздавать репозиторий? (как вы можете видеть, это похоже на подрывный тип стиля управления версиями)
EDIT - ошибка:
To ssh://...
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'ssh://...'
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.
Ответы
Ответ 1
Что вы должны делать, так это создание удаленного репозитория в виде открытого хранилища. Голый репозиторий - это только репозиторий git без текущей проверки (то есть он похож только на содержимое .git
dir в регулярном репо git, поэтому он содержит объекты и ссылки, но он не " t имеет индекс или рабочую копию иерархии файлов). Если вы попытаетесь нажать на не-голый репозиторий, рабочая копия будет не синхронизирована с тем, что было совершено, и вызовет проблемы, которые вы видите здесь.
Вы можете создать голый репозиторий, используя git init --bare repo.git
. Или вы можете клонировать существующий репозиторий в качестве открытого репо с помощью git clone --bare original-repo new-repo.git
.
Если вы хотите иметь выданную копию репозитория на своем сервере, вам нужно будет создать новое, не-обнаженное репо на сервере, а затем вытащить это репо из голого репо, на которое вы нажимаете.
Ответ 2
это всегда означает, что вы не синхронизировали удаленный репозиторий с локальным репо, поэтому сначала вы должны синхронизировать их с помощью команды git pull следующим образом:
git checkout master
git pull origin master
после этого процесса вы их синхронизируете, а затем вы можете вносить изменения в удаленное репо:
git add [filename/directory]
git commit -m"input your message"
git remote add origin https://github.com//yourname.git
git push origin master
Ответ 3
Вот еще один вариант.
git reset --mixed origin/master
git add .
git commit -m "Your message"
git push origin master
Ответ 4
У меня возникла аналогичная проблема, и работала следующая команда.
git push -set-upstream origin master