Каков текущий способ удаления подмодуля git?
начиная с версии git 1.9.3 (Apple Git-50) на mac как удалить подмодуль git? Я читаю много устаревшей информации со многими разработчиками, которые говорят мне, что они не будут работать. Что сейчас ?
будет git deinit pathToSubModule делать трюк ?
шаги, которые я думал, будут работать здесь но комментарии говорят, что они не.
позвольте мне объяснить мою текущую ситуацию и то, что мне нужно сделать. Я установил быстрый репозиторий и добавил его в качестве подмодуль к моему проекту. Этот код уже зарегистрирован, и другие используют его. Что мне сейчас нужно сделать, это вилки тот же быстрый репозиторий и разместить его на более безопасном github, что моя компания имеет (так что совершенно другой частный github). После разветвления я хочу добавить эту вилку в качестве gitSubmodule и позволить ей заменить текущий быстрый подмодуль, который я установил ранее.
обновление: я прочитал, что следующий правильный путь на последней версии git пожалуйста подтверждаете?
To remove a submodule added using:
git submodule add blah@blah.com:repos/blah.git lib/blah
Run:
git rm lib/blah
That's 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
3 ответа:
у вас
git submodule deinitgit 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будет пропустить любые незарегистрированные подмодули, пока они не будут инициализированы снова, поэтому используйте эту команду, если вы не хотите чтобы иметь локальную проверку подмодуля в вашем рабочем дереве больше.если вы действительно хотите удалить подмодуль из репозитория и зафиксировать его использование .
если
--forceуказано, что дерево работы подмодуля будет удалено, даже если оно содержит локальные изменения.
как безопасно удалить субмодуль.
(добавляет к https://stackoverflow.com/a/1260982/342794)
перечислите и найдите раздел подмодуля в . Скажем, через терминал
vi .gitmodules. Пример:[submodule "submodules/afnetworking"] path = submodules/afnetworking url = https://github.com/CompanyName/afnetworking.gitподмодули могут использоваться с локальными вилками. Для длительно работающих проектов код может отличаться от исходного РЕПО и может иметь некоторые исправления. Это хорошая идея, чтобы проверить, если код подмодуля пошел через изменения в течение проекта. Пример: посмотрите на журналы, если он указывает на
masterфилиал или какой-то местный филиал. изучение журналов git, чтобы найти изменения, которые были сделаны через терминал. обычно они хранятся в каталоге, мой пример, под .User$ cd submodules/afnetworking User$ git logудалите раздел подмодуля .gitmodules, сохраните файл. Пример:
git statusдолжно отображаться только следующее Как измененоmodified: .gitmodulesэтап изменения с
git add .gitmodules.перечислите и найдите раздел подмодуля в
.git/configфайлы. Скажем, через терминалvi .git/config. Пример:[submodule "submodules/afnetworking"] url = https://github.com/CompanyName/afnetworking.gitудалите файлы git cache sobmodule. работает
git rm --cached submodules/afnetworking(без задней косой черты) удалит его успешно. Пример:User$ git rm --cached submodules/afnetworking rm 'submodules/afnetworking' <-- terminal outputудалите файлы подмодулей в разделе С
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/сохранить изменения. Подтвердите с помощью
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)удалите неотслеженные файлы подмодулей.
User$ rm -rf submodules/afnetworkingудалить ссылки из проекта Xcode. Сборка, исправление компиляции и проблем во время выполнения.
Я использую git версии 2.16.2 и
git rmделает работу в основном так:git rm path-to-submoduleвы можете проверить с
git statusиgit diff --cachedчто это деинициализирует подмодуль и изменяет.gitmodulesавтоматически. Как всегда, вам нужно совершить изменение.однако, даже если подмодуль удален из системы управления версиями,
.git/modules/path-to-submoduleпо-прежнему содержит репозиторий подмодуля и.git/configсодержит его URL, так что вам все равно придется удалить их вручную:git config --remove-section submodule.path-to-submodule rm -rf .git/modules/path-to-submoduleсохранение репозитория и конфигурации подмодулей намеренно, чтобы вы могли отменить удаление, например,
git reset --hard.