Ссылка на подмодули Git не является деревом - PullRequest
0 голосов
/ 14 июля 2011

Разработчик выполнил шаги, которые мы рекомендуем для использования git, и потерял коммит субмодуля. Я понимаю, что эта ошибка означает, что она выдвинула супер проект, но не субмодуль, но она отрицает это и имеет историю своих команд, которую она показала мне. Вот шаги, которые, казалось, вызвали это. Я хотел бы понять, как сказать ей, чтобы избежать этого в будущем.

  • Она совершена в подмодуле и в суперпроекте.
  • она вытащила последнюю на своей ветке. Это вызвало конфликт субмодулей без конфликта реального контента
  • она запустила git commit -a в суперпроекте, чтобы решить его. (Было бы полезно понять и этот тип конфликта).
  • Она провела слияние из другой ветки и совершила в обоих местах.
  • Она запустила глобальный push, который cds в каждый подмодуль, запускает push, а затем запускает push в суперпроекте.

В этот момент ее работа, зафиксированная в исходном коммите в подмодуле, исчезла из git log.

1 Ответ

1 голос
/ 14 июля 2011

Я полагаю, что коммит был потерян, когда она разрешила конфликт субмодулей.Его можно получить, следуя инструкциям в этом вопросе .

Или запустите

gitk --all $( git fsck --no-reflog | awk '/dangling commit/ {print $3}' )

(Это из этот вопрос )

Делайте это только в исходном репо (так как git clone удалиткоммит) и сделайте резервную копию этого раньше.

...