Как заставить форматировать поддерево для перезаписывания удаленных изменений?
Мы используем развертывание поддерева a lá this Gist для развертывания подкаталога нашего Yeoman проекта, В нашем случае ветвь называется производством, а не gh-pages.
Это отлично работало до вчерашнего дня, когда сервер Git отклонил команду git subtree push --prefix dist origin production
, говоря
! [rejected] 9fe1683aa574eae33ee6754aad702488e0bd37df -> production (non-fast-forward)
error: failed to push some refs to '[email protected]:web-and-new-media/graduation2015.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart.
Если я переключаюсь на производственную ветвь локально (что чисто), git pull
возвращает Your branch is up-to-date with 'origin/production'.
, даже если я использую параметр --rebase
.
Я вижу содержимое производственной ветки на сервере через наш веб-интерфейс и там ничего не должно быть, просто скомпилированный вывод нашего каталога dist
, как я ожидал.
С этой целью кажется, что я должен быть в состоянии принудительно перезаписать эти файлы, но как? git subtree push
не имеет опции --force
.
Ответы
Ответ 1
Трюк состоял в том, чтобы связать разделение поддерева с принудительным нажатием:
git push origin `git subtree split --prefix dist master`:production --force
Я получил это из добавления http://clontz.org/blog/2014/05/08/git-subtree-push-for-deployment/, который фактически ссылается на this ответ на переполнение стека. Я снял это раньше, но пост Стива Клонца сделал это для меня.