Каков текущий способ удаления подмодуля git?

как из git версии 1.9.3 (Apple Git -50) на mac, как удалить подмодуль git? Я читаю много устаревшей информации, многие разработчики говорят мне, что они не будут работать. Каков нынешний путь?  будет git deinit pathToSubModule делать трюк?

Шаги, которые, как я думал, будут работать, здесь, но комментарии говорят, что они не будут.

Позвольте мне объяснить мою текущую ситуацию и то, что мне нужно. Я установил Quick repository и добавил его в качестве подмодуля к моему проекту. Этот код уже проверен, а другие его используют. То, что мне теперь нужно сделать, - это развить тот же Quick-репозиторий и разместить его в более безопасном github, который у моей компании (так что это совершенно другой частный github). После разветвления я хочу добавить эту вилку в качестве gitSubmodule и позволить ей заменить текущий Quick subodule, который я установил ранее.

update: я прочитал, что следующее верное решение в последней версии git, пожалуйста, подтвердите?

To remove a submodule added using:

git submodule add [email protected]:repos/blah.git lib/blah
Run:

git rm lib/blah
That it.

For old versions of git (circa ~1.8.5) use:

git submodule deinit lib/blah
git rm lib/blah
git config -f .gitmodules --remove-section submodule.lib/blah

Ответ 1

У вас есть git submodule deinit

git submodule deinit <asubmodule>    
git rm <asubmodule>
# Note: asubmodule (no trailing slash)
# or, if you want to leave it in your working tree
git rm --cached <asubmodule>
rm -rf .git/modules/<asubmodule>

deinit

Отменить регистрацию данных подмодулей, т.е. удалить все submodule.$name
  раздел от .git/config вместе со своим деревом работ.

Дальнейшие вызовы git submodule update, git submodule foreach и git submodule sync будут пропускать любые незарегистрированные подмодули до тех пор, пока они не будут инициализированы снова, поэтому используйте эту команду, если вы не хотите, чтобы локальная проверка подмодуль в вашем рабочем дереве.

Если вы действительно хотите удалить подмодуль из репозитория и зафиксировать его вместо git rm.

Если указано --force, дерево работы подмодулей будет удалено, даже если оно содержит локальные модификации.

Ответ 2

Как безопасно удалить подмодуль.

(добавляет к fooobar.com/info/235/...)

  • Перечислите и найдите раздел подмодуля в файле .gitmodules. Скажите через терминал vi .gitmodules. Пример:

[submodule "submodules/afnetworking"] path = submodules/afnetworking url = https://github.com/CompanyName/afnetworking.git

  1. Подмодули могут использоваться с локальными вилами. Для долгосрочных проектов код может отличаться от исходного репо и может иметь некоторые исправления. Это хорошая идея проверить, прошел ли код подмодуля через изменения в ходе проекта. Пример. Посмотрите на журналы, если они указывают на ветвь master или какую-либо локальную ветвь. исследуя журналы git, чтобы найти изменения, которые были сделаны через терминал. обычно они хранятся в каталоге, в моем примере, в каталоге submodules. User$ cd submodules/afnetworking User$ git log

  2. Удалите раздел подмодуля из .gitmodules, сохраните файл. Пример: git status должен отображаться только после изменения modified: .gitmodules

  3. Сформируйте изменения с помощью git add .gitmodules.

  4. Перечислите и найдите раздел подмодуля в файлах .git/config. Скажите через терминал vi .git/config. Пример: [submodule "submodules/afnetworking"] url = https://github.com/CompanyName/afnetworking.git

  5. Удалите файлы sobmodule кэша git. запуск git rm --cached submodules/afnetworking (без косой черты) удалит его успешно. Пример: User$ git rm --cached submodules/afnetworking rm 'submodules/afnetworking' <-- terminal output

  6. Удалите файлы подмодулей в каталоге .git с помощью rm -rf .git/modules/.... Подтвердите это с помощью git status после.

User$ rm -rf .git/modules/submodules/afnetworking/ User$ git status On branch feature/replace-afnetworking-submodule-with-pod Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: .gitmodules deleted: submodules/afnetworking Untracked files: (use "git add <file>..." to include in what will be committed) submodules/afnetworking/

  1. Зафиксируйте изменения. Подтвердите с помощью git status после.

User$ git commit -m "Remove submodule afnetworking" [feature/replace-afnetworking-submodule-with-pod 70e239222] Remove submodule afnetworking 2 files changed, 4 deletions(-) delete mode 160000 submodules/afnetworking User$ git status On branch feature/replace-afnetworking-submodule-with-pod Untracked files: (use "git add <file>..." to include in what will be committed) submodules/afnetworking/ nothing added to commit but untracked files present (use "git add" to track)

  1. Удалите неиспользуемые файлы подмодулей. User$ rm -rf submodules/afnetworking

  2. Удалить ссылки из проекта Xcode. Сборка, исправление компиляции и выполнения.