Я использую поддерево Git с несколькими проектами, над которыми я работаю, чтобы разделить между ними некоторый базовый код. Базовый код часто обновляется, и обновления могут происходить в любом из проектов, причем все они в конечном итоге обновляются.
Я столкнулся с проблемой, когда git сообщает, что мое поддерево обновлено, но отправка отклоняется. Например:
#! git subtree pull --prefix=public/shared project-shared master
From github.com:****
* branch master -> FETCH_HEAD
Already up-to-date.
Если я нажму, я должен получить сообщение о том, что нажимать нечего... Верно? ПРАВИЛЬНО? :(
#! git subtree push --prefix=public/shared project-shared master
git push using: project-shared master
To [email protected]:***
! [rejected] 72a6157733c4e0bf22f72b443e4ad3be0bc555ce -> master (non-fast-forward)
error: failed to push some refs to '[email protected]:***'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Что может быть причиной этого? Почему толчок не работает?
--rejoin
для ускорения отправки поддеревьев. Когда я прохожу через нажатие поддерева вручную, запускаяsubtree split --rejoin
, ветвь разделенного поддерева имеет историю только до последнего повторного соединения, тогда как обычно она содержит всю историю поддерева. Для меня это непосредственная причина ошибки без быстрой перемотки вперед. Я все еще не уверен, почему разделение поддерева создает усеченную историю. - person hurrymaplelad   schedule 12.12.2014