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