Почему я получаю ошибку: не удалось нажать некоторые ссылки?

У меня есть удаленный репозиторий 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