Предполагая, что вас не волнует текущее содержимое vendor/plugins/delayed_job
в вашем рабочем дереве (т. Е. Содержимое, которое будет извлечено как подмодуль, уже является подходящей заменой содержимого в вашем рабочем дереве), обычная процедура для преобразования каталога в подмодуль выглядит так:
git rm -r vendor/plugins/delayed_job
git submodule add github.com:account/delayed_job.git vendor/plugins/delayed_job
Конечно, URL репозитория GitHub может отличаться; Например, вы можете использовать HTTP-URL вместо указанного выше SSH-URL.
Но, похоже, вы сделали что-то немного другое. Насколько я могу судить, вы сделали что-то вроде этого:
rm -rf vendor/plugins/delayed_job
git clone github.com:account/delayed_job.git vendor/plugins/delayed_job
У этой процедуры есть два недостатка:
- Обычный
rm
оставляет старые файлы в вашем индексе Git.
- Непосредственное клонирование дает вам «субрепозиторий», но не официальный подмодуль.
Предполагая, что у вас нет преднамеренно внесенных изменений в vendor/plugins/delayed_job
(вероятно, нет, поскольку вы заменяете его подмодулем), вы можете исправить ситуацию с помощью следующих команд:
git rm --cached -r vendor/plugins/delayed_job
git submodule add github.com:account/delayed_job.git vendor/plugins/delayed_job
Очистка всех vendor/plugins/delayed_job
записей из индекса должна решить вашу проблему «все еще показывает новые файлы». Использование git submodule add
создаст файл .gitmodules
, который превратит «субпозиторий» в настоящий подмодуль.