2015-10-16 4 views
19

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

+0

Команда 'git subtree split --prefix dist origin production' также не работает:' fatal: неоднозначный аргумент 'origin': неизвестная ревизия или путь не в рабочем дереве. – ele

+0

Ну, теперь я действительно в тупике. Я запускал 'git subtree pull --prefix dist origin production', который оставил меня с конфликтом слияния, связанным с кодом, который я изменил, поэтому я исправил это и снова запускал' git subtree push -prefix dist origin production'. только с ошибкой с той же ошибкой снова. – ele

ответ

30

Хитрость заключалась в цепи поддерево раскол в вынужденный толчок:

git push origin `git subtree split --prefix dist master`:production --force 

Я получил это от Дополнение к http://clontz.org/blog/2014/05/08/git-subtree-push-for-deployment/, который на самом деле ссылается this ответ на переполнение стека. Я снял это раньше, но пост Стива Клонца заставил меня щелкнуть.

+1

Это решение завершилось неудачей с «фатальным: неоднозначным аргументом« publish-dev »: неизвестная ревизия или путь не в рабочем дереве». –

+0

Обновленная ссылка http://clontz.org/blog/2014/05/08/git-subtree-push-for-deployment/ –

+0

Кто-нибудь разрешил фатальную двусмысленную проблему? –