Git: не может объединиться с основной веткой "объект - это подмодуль" - PullRequest
1 голос
/ 11 июля 2009

Мне трудно слиться с моей основной веткой в ​​отдельную ветку, над которой я работал довольно давно.

Выполняя прямое слияние, я получаю следующее:

shell$ git merge master
fatal: cannot read object asd211f3a58febecd4e447szxs733079211c71b7sa '/my/sub/dir/foo~master': It is a submodule!

Я никогда не устанавливал библиотеку 'foo' как субмодуль в явном виде. Я сделал ошибку, переместив библиотеку, которая сама была версионирована git с подкаталогом .git в основной проект, который также является репозиторием git.

Видимо, я не удалил субмодуль должным образом, или что-то еще серьезно сломалось.

Более насущная проблема заключается в том, что после неудачного слияния я вижу ошеломляющее количество файлов проекта через «git status». Есть файлы, которые были изменены, но не добавлены, в дополнение к «неотслеживаемым файлам». Это не файлы из моей ветки, это файлы от мастера.

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

Какой лучший способ очистить этот репозиторий?

Ответы [ 2 ]

1 голос
/ 12 июля 2009

Могу ли я предложить:

git reset --hard ORIG_HEAD

Затем исследуйте субмодуль с помощью:

git submodule status

Есть ли у вас файл .gitmodules? Сделайте все возможное, чтобы удалить понятие подмодуля из обеих ветвей (зафиксируйте это), а затем повторите попытку слияния.

0 голосов
/ 24 ноября 2009

В моем случае у меня есть ветвь с именем "main", которая зависит от конкретной версии библиотеки, которая хранится и отслеживается как подмодуль. Мастер (транк) использует версию библиотеки библиотеки dev и поэтому удаляет субмодуль. Выполнение простого git-слияния завершится неудачно, когда оно попадет в подмодуль, и не даст никаких подсказок о том, что делать дальше:

 git merge --no-commit main/urology-main
 fatal: cannot read object 7bd71249fc9575b7985bcd6b65e77f14690a6be6 'Utech_DTools': It is a submodule!

Google поднял этот аналогичный вопрос , где было предложено использовать конкретную стратегию слияния "решить":

 git merge -s resolve --no-commit main/urology-main
 ERROR: Utech_DTools: Not handling case 66001ac8d03d8b930c72536d3946ca40e3810320 ->  -> 7bd71249fc9575b7985bcd6b65e77f14690a6be6

Однако объединение продолжилось после пропуска субмодуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...