Git пытается передать файлы подмодулей в родительский проект

Итак, у меня есть проект с некоторыми подмодулями. Все это отлично поработало, пока я не попробовал инструменты Visual Studio git. Я попытался зафиксировать там подмодуль. С тех пор я читал онлайн, что инструменты vs git не поддерживают подмодули должным образом.

Итак, кажется, что я остался с немного беспорядком, и я не уверен, как его разобраться.

когда я выполняю git commit -dry-run, я получаю это: http://db.tt/CRKbC5Gt Верно, что я изменил эти тесты в подмодуле Memflex, но их не следует проверять в основном проекте.

Сам подмодуль все еще работает, я проверил его и проверил на github, все там хорошо.

Итак, моя проблема заключается в том, что содержащий проект сейчас кажется смущенным о подмодуле. Даже если у него есть подмодуль, указанный в .gitmodules

Если я перейду к подмодулям, он все еще показывает, что это подмодуль, поскольку он имеет правильную ветвь подмодуля, например: http://db.tt/sTvQQ9qY

Если я пользователь черепаха git, он пытается проверить каждый отдельный файл подмодуля, который я проверил в visual studio, например: http://db.tt/rtX9rz6r

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

Я попытался с git подмодулем init без везения, насколько я вижу, он ничего не сделал.


Обновление: я вижу, что произошло на Ассембле, где находится основной проект: http://db.tt/uscTJ9MB

Я думаю, что я здесь что-то здесь! Только проект, который я проверил из визуального, получил этот каталог, а также подмодуль

Ответы

Ответ 1

Я закончил работу с git rm --cached -rf Memflex/из моего Lib-дистрибутива, например: http://db.tt/E0SejkDw

Это удалило каталог, но сохранил подмодуль, и, таким образом, все снова было в волшебном forrest.

Ответ 2

Запуск git 1.9.x/git2.0 (Q2 2014) и commit cbaeafc, завершающий слэш или отсутствие трейлинг-косой черты ' t сделать больше:

Разрешить "git cmd path/", когда "path" - это где подмодуль привязан к рабочему дереву верхнего уровня, чтобы соответствовать "path", несмотря на лишнюю и ненужную конечную косую черту.

Таким образом, вы не сможете добавить по ошибке содержимое подмодуля в родительское репо (заставляя вас отменить этот ошибочный git add с помощью git rm --cached -rf).

Ответ 3

Это происходит, если вы используете git add <path-to-submodule>/, который отличается от git add <path-to-submodule-without-slash>

Во втором случае git начинает отслеживать только каталог, понимая, что на самом деле это ссылка на подмодуль. В первом случае он считает, что вы хотите отслеживать все содержимое папки как часть этого репо.