Почему я не могу получить этот подмодуль из репозитория git?

На Github есть два репозитория. Repo1 и Module1

Ранее я клонировал оба этих репозитория на свой локальный компьютер с Windows с помощью Github Desktop, и два репозитория существуют в следующих двух папках:

  • C:\Users\Me\Documents\GitHub\Repo1
  • C:\Users\Me\Documents\GitHub\Module1

Теперь кто-то добавил Module1 в качестве подмодуля Repo1, и когда я смотрю на Github онлайн, я вижу, что Module1 существует под Repo1\submodules.

Если я перехожу в командную строку и запускаю следующую команду в папке Repo1, git submodule update --init, я получаю пару ошибок. Во-первых, из git CLI я вижу вывод:

Submodule 'submodules/Module1' (https://github.com/MyOrg/Module1.git) registered for path 'submodules/Module1'
fatal: not a git repository: C:/Users/Me/Documents/GitHub/Repo1/submodules/Module1/../../.git/modules/submodules/Module1
Failed to clone 'submodules/Module1'. Retry scheduled
BUG: submodule considered for cloning, doesn't need cloning any more?
fatal: could not get a repository handle for submodule 'submodules/Module1'

И в Github Desktop он начинает говорить:

Can't find "Repo1"
It was last seen at C:\Users\Me\Documents\GitHub\Repo1

После этого на моей локальной машине появился новый файл C:\Users\Me\Documents\GitHub\Repo1\submodules\Module1\.git со следующим содержимым:

gitdir: ../../.git/modules/submodules/Module1

И если я удалю этот файл, Github Desktop снова начнет распознавать репо. Но попытка получить репо не приводит к подмодулю Module1. В итоге я получаю пустую папку C:\Users\Me\Documents\GitHub\Repo1\submodules\Module1 на своем локальном компьютере.

Это заставляет меня думать, что когда подмодуль был добавлен из другой архитектуры (Linux / Mac), каким-то образом путь был жестко запрограммирован, и он ищет не в том месте. Но я не совсем уверен, как работает эта функциональность подмодуля, и я не уверен, куда идти дальше. Мне нужен Github Desktop или Git CLI, чтобы получить подмодуль с репозиторием.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Во-первых, убедитесь, что удаленный Repo1 репозиторий GitHub правильно ссылается Module1 в .gitmodules файле.
Вы должны увидеть в нем:

[submodule "Module1"]
        path = submodules/Module1
        url = https://github.com/aUser/Module1

Во-вторых, попробуйте для тестирования снова клонировать Repo1 в другую папку, используя опцию clone --recurse-submodules:

git clone --recurse-submodules https://github.com/aUser/Repo1

Затем откройте GitHub Desktop и укажите ссылку на этот новый Repo1 клон.
Убедитесь, что Module1 правильно импортирован туда.

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

Appleoddity 11.02.2023 22:45

Другие вопросы по теме