Об

Часто бывает так, что во время работы над одним проектом вам необходимо использовать другой проект из его состава. Возможно, это библиотека, разработанная третьей стороной, или библиотека, которую вы разрабатываете отдельно и используете в нескольких родительских проектах. В таких случаях возникает общая проблема: вы хотите иметь возможность рассматривать эти два проекта как отдельные, но при этом иметь возможность использовать один из них из другого.

Ссылки

Git - Книга
Инструменты Git - Подмодули

Удаление подмодуля

Удаление Git-подмодуля с помощью git submodule deinit

Команда git submodule deinit -f .\themes\hugo-coder удаляет субмодуль hugo-coder из репозитория. Она снимает субмодуль с регистрации и очищает связанный с ним каталог.

> git submodule deinit -f .\themes\hugo-coder
Cleared directory 'themes/hugo-coder'
Submodule 'themes/hugo-coder' (https://github.com/luizdepra/hugo-coder.git) unregistered for path 'themes/hugo-coder'

Удаление каталога, связанного с подмодулем, с помощью rm

Команда rm .\.git\modules\themes -r -fo удаляет каталог, связанный с подмодулем, из каталога .git/modules. Это необходимо для полного удаления подмодуля из репозитория. Флаг -r используется для рекурсивного удаления каталога, а флаг -fo - для принудительного удаления без запроса подтверждения.

> rm .\.git\modules\themes -r -fo

Удаление Git-подмодуля с помощью git rm

Команда git rm -f .\themes\hugo-coder удаляет подмодуль hugo-coder из репозитория. Она удаляет подмодуль из рабочего дерева и индекса, фактически удаляя его из хранилища. Флаг -f используется для принудительного удаления без запроса подтверждения.

> git rm -f .\themes\hugo-coder
rm 'themes/hugo-coder'

Проверка текущего состояния вашего Git-репозитория с помощью git status

Команда git status показывает текущее состояние Git-репозитория. В данном случае она показывает, что ветка main и она обновляется с удаленной веткой origin/main. Он также показывает, что есть изменения, которые должны быть зафиксированы, а именно изменение файла .gitmodules и удаление подмодуля themes/hugo-coder. В сообщении предлагается использовать команду git restore --staged <file>..., чтобы снять фиксацию изменений, если это необходимо.

> git status
On branch main
Your branch is up to date with 'origin/main'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   .gitmodules
        deleted:    themes/hugo-coder

Фиксация изменений в вашем Git-репозитории с помощью git commit

Команда git commit -m "Removing submodules" фиксирует изменения, внесенные в репозиторий, а именно удаление субмодуля hugo-coder. Сообщение о фиксации - “Удаление подмодулей”. Вывод показывает, что 2 файла были изменены и 4 удалены, включая удаление каталога, связанного с подмодулем. Строка “delete mode 160000 themes/hugo-coder” указывает на то, что подмодуль был успешно удален.

> git commit -m "Removing submodules"
[main 72b9422] Removing submodules
 2 files changed, 4 deletions(-)
 delete mode 160000 themes/hugo-coder

Передача изменений в удаленный Git-репозиторий с помощью git push

Команда git push перемещает изменения, внесенные в локальный репозиторий, в удаленный репозиторий на GitHub. Вывод показывает ход выполнения push, включая количество перечисляемых и подсчитываемых объектов, использование дельта-сжатия и потокового сжатия, а также запись объектов в удаленный репозиторий. Последняя строка показывает, что push был успешным, локальная ветка main была обновлена, чтобы соответствовать удаленной ветке main.

> git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (1/1), done.
Writing objects: 100% (3/3), 243 bytes | 243.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/ponfertato/example.git
   a79a63f..72b9422  main -> main