Learning Git: Remote отклоняет мой толчок, несмотря на правильную конфигурацию?


Я только учусь Git так что, пожалуйста, потерпите меня. Я написал некоторый код локально, и теперь я хотел бы отправить его на мой удаленный сервер (origin). Я получаю эту ошибку:

! [отклонено] master - > master (fetch first)

Ошибка: не удалось подтолкнуть некоторые ссылки к 'ssh://website@host.website.com:2200/home/user'

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

Пульт дистанционного управления является v 2.4.1 и имеет следующие настройки (выход git config --list):

core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
receive.denycurrentbranch=updateInstead

Не означает ли последнее, что мне должно быть разрешено переопределять конфликты без возникновения ошибки?

Я в основном ищу простейшую установку: Я не разрабатываю на сервере, и я единственный, кто имеет к нему доступ, поэтому я хочу, чтобы все, что делает машина разработки, выиграло.

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

Если я войду в удаленный репозиторий и выполню git status, я увижу

Неотслеживаемые файлы: (используйте "git add ..."включить в то, что будет совершено)

...(длинный список файлов)

Ничего не добавлено для фиксации, но присутствуют неотслеживаемые файлы (используйте "git add" для трек)

Добавление

Я только что сделал:

$ git push --force origin master
stdin: is not a tty
Counting objects: 3801, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3674/3674), done.
Writing objects: 100% (3801/3801), 6.95 MiB | 37.00 KiB/s, done.
Total 3801 (delta 2450), reused 0 (delta 0)
error: Untracked working tree file 'cacert.pem' would be overwritten by merge.
To ssh://website@host.website.com:2200/home/user
 ! [remote rejected] master -> master (Could not update working tree to new HEAD)
error: failed to push some refs to 'ssh://website@host.website.com:2200/home/'

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

1 2

1 ответ:

Я не хочу, чтобы локальные файлы импортировали какие-либо изменения с удаленного устройства, я хочу, чтобы локальные файлы перезаписывали удаленные файлы

Проблема в том, что с этим сообщением об ошибке, если вы не хотите вытаскивать git, вам нужно:

git push --force
Но это не просто перезапишет файлы, это перезапишет недавнюю историю коммитов на удаленной стороне вашими коммитами, поэтому убедитесь, что это действительно то, что вы хотите.

Пульт имеет настройку receive.denycurrentbranch=updateInstead. Разве это не означает, что мой толчок должен быть просто обновить удаленную главную ветку?

Это позволяет толкать к не-голому РЕПО (смотрите больше здесь о "push-to-deploy"), но сообщение об ошибке не об этом.
Речь идет о коммитах на удаленной стороне, которых у вас нет локально.

Обычно вы pull --rebase, чтобы воспроизвести свои изменения поверх обновленной извлеченной удаленной ветви. затем вы толкаете.