Каков текущий способ удаления подмодуля 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 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
будет пропустить любые незарегистрированные подмодули, пока они не будут инициализированы снова, поэтому используйте эту команду, если вы не хотите чтобы иметь локальную проверку подмодуля в вашем рабочем дереве больше.если вы действительно хотите удалить подмодуль из репозитория и зафиксировать его использование .
если
--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
.