#git #git-push #subtree
Вопрос:
Я использовал поддерево git для встраивания репозитория в папку нашего основного проекта. Я не уверен, что произошло, но нажатие поддерева теперь не позволяет обновить удаленное репо.
Команда, которую я использую для нажатия, такова:
git subtree push --prefix themes/natra https://github.com/OpenSID/tema-natra.git premium
Сообщение об ошибке выглядит так:
fatal: ambiguous argument '3f44cc87ceb87df1d9171096596a824fc3050a27^{commit}': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
could not rev-parse split hash 3f44cc87ceb87df1d9171096596a824fc3050a27 from commit 8577911bf6183497cc246aa620e7be1b6becec29
Я не могу найти фиксацию/хэш 3f44cc87ceb87df1d9171096596a824fc3050a27 в репо. В следующем изображении gitx Фиксация разделена на git-поддерево, я вижу, что фиксация разделена на git-поддерево. Но, похоже, его больше нет в репо.
Как я могу обойти или восстановить эту явно отсутствующую фиксацию? Любая помощь будет очень признательна.
Комментарии:
1. Вероятно , это ошибка, в
git subtree
которой есть некоторые известные ошибки. Подробности смотрите в архиве списка рассылки Git.git subtree
Насколько мне известно, на данный момент никто активно не поддерживает.2. Спасибо за информацию @torek. Поскольку я не в состоянии помочь в отладке
git subtree
, похоже, мне нужно будет подумать о замене использованияgit subtree
.
Ответ №1:
Как я ответил вам в списке рассылки Git, это происходит потому premium
, что филиал в https://github.com/OpenSID/tema-natra.git его толкнули силой.
Чтобы обойти это, просто извлеките коммит по его хэшу (он все еще доступен на GitHub).:
git fetch https://github.com/OpenSID/tema-natra.git 3f44cc87ceb87df1d9171096596a824fc3050a27
и тогда вы сможете выполнить свою git subtree push
команду (хотя вам, возможно, потребуется принудительно нажать…)
Комментарии:
1.Спасибо @philb. Теперь
git subtree push
команда больше не жалуется на отсутствующую фиксацию. Тем не менее, он по-прежнему завершается неудачно, когда сообщения об отладке показывают, что большое количество фиксаций выполняется в неправильном порядке. Вот выдержка:Using cachedir: /Users/eddieridwan/projects/jimmybox/public/premium/.git/subtree-cache/50582
Looking for prior splits...
Processing commit: 1fbbdda4f0ef15794eeb4a343d3fb1bf17fbb853
«родители: c75f7cab156c91a1bf3b36658e1ac94dd1905bba` ` неправильный порядок: c75f7cab156c91a1bf3b36658e1ac94dd1905bba`2. Может ли это быть связано с тем, что неверная информация теперь находится в кэше поддеревьев? Стоит ли пытаться удалить кэш? Спасибо.