Каков текущий способ удаления подмодуля 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
-
Подмодули могут использоваться с локальными вилами. Для долгосрочных проектов код может отличаться от исходного репо и может иметь некоторые исправления. Это хорошая идея проверить, прошел ли код подмодуля через изменения в ходе проекта. Пример. Посмотрите на журналы, если они указывают на ветвь master
или какую-либо локальную ветвь. исследуя журналы git, чтобы найти изменения, которые были сделаны через терминал. обычно они хранятся в каталоге, в моем примере, в каталоге submodules
.
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
-
Удалите файлы sobmodule кэша git. запуск git rm --cached submodules/afnetworking
(без косой черты) удалит его успешно. Пример:
User$ git rm --cached submodules/afnetworking
rm 'submodules/afnetworking' <-- terminal output
-
Удалите файлы подмодулей в каталоге .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/
- Зафиксируйте изменения. Подтвердите с помощью
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. Сборка, исправление компиляции и выполнения.