Я на самом деле пытаюсь научиться использовать git, включая git submodule
подкоманды. Я уже настроил сервер, на котором я могу размещать, отправлять и извлекать 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 / opt / git / fdf.git, используйте параметр --force. Если локальный каталог git не правильный, или вы не уверены, что это значит, выберите другое имя с параметром --name.
На самом деле нет подкаталога в projets/
Я прочитал в другой ветке, что мне следует использовать git submodule sync
или редактировать файл .gitmodules, в котором мог измениться URL-адрес исходного репозитория моего подмодуля.
Но мой файл .gitmodules содержит только информацию о моем первом подмодуле (tools / libft), а не о projets / fdf:
[submodule "tools/libft"]
path = tools/libft
url = ssh://git@XXX.XXX.XXX.XXX:XXXXX/opt/git/libft.git
Будучи французским студентом, я мог что-то пропустить в английской документации, которую я нашел, но я искал, и я действительно не понимаю, почему я получил эту проблему.
Я был бы рад, если бы я нашел решение, но просто объяснение было бы также полезно.
источник
/Travail/.git/modules/projets/
и нашелfdf
каталог. Похоже, что это не в рабочем дереве, а в старых коммитах. Может ли это вызвать проблему?Ответы:
Я пришел к этому посту, пытаясь добавить субмодуль с тем же путем, что и субмодуль, который я недавно удалил.
Это то, что в конечном итоге сработало для меня ( эта статья очень помогла ):
Если вы еще не пробежали
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
источник
git rm
иrm -rf
шаги.).git/modules
и это сработало.Я попробовал решение jbmilgrom, в частности, я пытался,
git rm --cache
и это не сработало для меня, так как каталог / подмодуль не было там. Что сработало для меня:rm -rf .git/modules/blah
git submodule add git://path.to.new
Я сделал это после того, как попробовал
--force
вgit submodule
командах и воrm
всех других каталогах, подтолкнул к мастеру и т. Д., Каталог не существовал, и для кеша не было никаких причин. Оказывается в.git/modules
том, где лежала эта ошибка.источник
Возможно, вы удалили свой
'projets/fdf'
диск, но в вашем Git-хранилище он все еще есть. Используйте,git rm -rf projets/fdf
чтобы удалить его из Git, затем зафиксируйте изменения. После этого вы сможете добавить эту папку как субмодуль.источник
/tmp/repo
, затем запуститеgit submodule add ../otherrepo.git
, и вы увидите, что эта/tmp/repo/.git/modules/otherrepo
папка существует. Это то, что проблема была для меня. Я вручную удалил эту папку из .git, и все заработало.Если вы уже удалили каталог подмодулей, как я, следуйте остальным инструкциям jbmilgrom. Ключ
rm -rf .git/modules/path_to_submodule
но идти вперед и ваш каталог репо резервного копирования всех родительского первым .Если у вас был только один субмодуль, просто удалите
.gitmodules
источник
Эти две команды работают для меня.
источник
.git/modules/
. Там есть папка, в которой хранится хранилище для субмодуля. Удаление этого хранилища устранило проблему для меня, а принятый ответ - нет.