Git subodule add: "каталог Git найден локально"

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

В моем репозитории Travail я уже добавил мой проект как подмодуль в tools/libft: Я могу развить этот подмодуль, нажать и вытащить его.

Но когда я пытаюсь добавить другой подмодуль (названный fdf, из fdf.git на моем сервере), я получаю следующую проблему:

git submodule add ssh://XXX.XXX.XXX.XXX:XXXXX/opt/git/fdf.git projets/fdf

Каталог git для 'projets/fdf' находится локально с удаленными (-ами):       origin ssh:// git @XXX.XXX.XXX.XXX: XXXXX/opt/git/fdf.git     Если вы хотите повторно использовать этот локальный каталог git вместо повторного клонирования из       SSH://XXX.XXX.XXX.XXX: XXXXX/опт/git/fdf.git     используйте опцию '--force'. Если локальный каталог git не является правильным репо     или вы не знаете, что это значит, выберите другое имя с параметром "--name".

На самом деле нет подкаталога в projets/

Я прочитал в другом потоке, что я должен использовать синхронизацию подмодуля git или отредактировать файл .gitmodules, в котором URL-адрес в исходном репозитории подмодуля мог быть изменен.

Но мой файл .gitmodules содержит только информацию о моем первом подмодуле (tools/libft), а не о файлах /fdf:

[submodule "tools/libft"]
    path = tools/libft
    url = ssh://[email protected]:XXXXX/opt/git/libft.git

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

Я был бы рад, если бы получил решение, но было бы полезно только объяснение.

Ответ 1

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

Это то, что в конечном итоге сработало для меня (эта статья многое помогла):

Если вы еще не выполнили git rm --cached path_to_submodule (без конечной косой черты), а также rm -rf path_to_submodule, сделайте это!

Тогда:

  • Удалите соответствующие строки из файла .gitmodules. например удалите их:

    [submodule "path_to_submodule"] path = path_to_submodule url = https://github.com/path_to_submodule

  • Удалите соответствующий раздел из .git/config. например удалите их:

    [submodule "path_to_submodule"] url = https://github.com/path_to_submodule

  • rm -rf .git/modules/path_to_submodule

Затем вы можете наконец:

git submodule add https://github.com/path_to_submodule

Ответ 2

Я попробовал решение jbmilgrom, в частности, я попробовал git rm --cache, и это не сработало для меня, поскольку каталог/подмодуль не был там. Что для меня работало:

  • rm -rf .git/modules/blah
  • git submodule add git://path.to.new

Я сделал это, попробовав --force в командах git submodule и rm всех других каталогах, нажав на мастер и т.д., каталог не существовал и не было причины для кеша. Оказывается в .git/modules, где лежала эта ошибка.

Ответ 3

Возможно, вы удалили свой 'projets/fdf' с диска, но ваш репозиторий Git все еще имеет его. Используйте git rm -rf projets/fdf, чтобы удалить его из Git, а затем зафиксируйте изменения. После этого вы сможете добавить эту папку в качестве подмодуля.

Ответ 4

Если вы уже удалили каталог подмодулей, как и я, следуйте инструкциям jbmilgrom. Ключ rm -rf .git/modules/path_to_submodule, но вперед и сначала создайте резервную копию всей директории родительского репо.

Если у вас был только один подмодуль, просто удалите .gitmodules

Ответ 5

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

Ответ 6

Эти две команды работают для меня.

rm path/to/submodule -rf
rm .git/modules/path/to/module -rf