Почему я получаю «ошибка: не удалось нажать некоторые ссылки»? - PullRequest
10 голосов
/ 15 апреля 2011

У меня есть удаленный репозиторий git и локальный, с которым я работаю. Всякий раз, когда я делаю какие-либо изменения локально, я отправляю их на пульт. Затем я иногда выполняю «git commit» на удаленном компьютере, чтобы сохранить изменения в удаленных файлах.

Я не редактирую удаленный репозиторий напрямую. Я просто фиксирую изменения. И я один разработчик, никто не работает над этими репозиториями.

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

Я не хочу тянуть, потому что файлы удаленных репозиториев устарели, и они потеряют мои локальные изменения. Это действительно раздражает, почему это происходит? И как я могу исправить без необходимости извлекать или воссоздавать хранилище? (как вы можете видеть, это что-то вроде подрывного типа стиля управления версиями здесь)

РЕДАКТИРОВАТЬ - Ошибка:

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.

Ответы [ 4 ]

11 голосов
/ 15 апреля 2011

Что вы должны сделать, это создать удаленный репозиторий как пустой репозиторий. Пустой репозиторий - это просто репозиторий git, без текущей проверки (то есть он похож на содержимое каталога .git в обычном репозитории Git, поэтому он содержит объекты и ссылки, но не имеет индекса или рабочая копия файловой иерархии). Если вы попытаетесь перейти в не-пустой репозиторий, рабочая копия будет не синхронизирована с тем, что зафиксировано, и вызовет проблемы, которые вы видите здесь.

Вы можете создать пустой репозиторий, используя git init --bare repo.git. Или вы можете клонировать существующее хранилище как голое хранилище, используя git clone --bare original-repo new-repo.git.

Если вы хотите иметь заархивированную копию хранилища на своем сервере, вам нужно будет создать новое, не обнаженное репо на сервере, а затем вытащить его из обнаженного репо, на который вы отправляете.

6 голосов
/ 08 января 2017

Вот еще один вариант.

git reset --mixed origin/master
git add .
git commit -m "Your message"
git push origin master
6 голосов
/ 23 июня 2016

это всегда означает, что вы не синхронизировали удаленный репозиторий с локальным репо, поэтому сначала вы должны синхронизировать их с помощью команды 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
0 голосов
/ 02 апреля 2017

Я столкнулся с подобной проблемой, и сработала следующая команда.git push - set-upstream master origin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...