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 ответ:
Я не хочу, чтобы локальные файлы импортировали какие-либо изменения с удаленного устройства, я хочу, чтобы локальные файлы перезаписывали удаленные файлы
Проблема в том, что с этим сообщением об ошибке, если вы не хотите вытаскивать git, вам нужно:
Но это не просто перезапишет файлы, это перезапишет недавнюю историю коммитов на удаленной стороне вашими коммитами, поэтому убедитесь, что это действительно то, что вы хотите.git push --force
Пульт имеет настройку
receive.denycurrentbranch=updateInstead
. Разве это не означает, что мой толчок должен быть просто обновить удаленную главную ветку?Это позволяет толкать к не-голому РЕПО (смотрите больше здесь о "push-to-deploy"), но сообщение об ошибке не об этом.
Речь идет о коммитах на удаленной стороне, которых у вас нет локально.Обычно вы
pull --rebase
, чтобы воспроизвести свои изменения поверх обновленной извлеченной удаленной ветви. затем вы толкаете.