Я в процессе портирования своего приложения JS на современные модули E6.Мое приложение хранится в git-репо.В репо есть подмодуль.
Я создал другую ветку, чтобы делать то, что мне нужно, но я хотел бы удалить подмодуль в этой конкретной ветке.
Причина в том, что у меня естьnpm install
приложению в подмодуле как к пакету, вместо того чтобы использовать его «классическим подмодулем», как я делаю в основной ветке.
Чтение этого ответа Я думал, что это будеттак же просто, как оформить заказ в новой ветке, измените файл .gitmodules, исключая подмодуль и удалив саму папку подмодуля.
Однако, когда я делаю это, я извлекаю мастер, и кажется, что субмодуль отсутствуеттакже, и это было бы огромной ошибкой.Я не ставил изменения перед проверкой, если это важно.
Итак, как мне избавиться от подмодуля в новой ветке, чтобы начать работать в нем, не теряя его в моей основной ветке?
РЕДАКТИРОВАТЬ 1
Я пытаюсь снова после комментариев PhD.Я нахожусь в ветке, где мне нужно удалить gitmodule.Я отредактировал файл .gitmodules
, чтобы удалить подмодуль, который мне нужно удалить, а затем попытался удалить подмодуль с помощью git rm -r <my_submodule>
, но я получил сообщение fatal: Please, stage your changes to .gitmodules or stash them to proceed
.
Поэтому я спрятал свои изменения и удалил подмодуль,Затем я смог оформить заказ в ветке master, и там была папка субмодулей (как мне было нужно).
Кроме того, мастер .gitmodules
все еще показывал субмодуль, который я удалил из другой ветки, которая была моейцель.
Так что теперь у меня есть основная ветка с подмодулем, а ветка "dev" без него, и я могу установить здесь с помощью npm.Так что, думаю, я что-то напутал, и ответ, который я связал , был прав.Приму ответ phd, поскольку он был правильным.
Наконец, так как у меня есть версия git 2.7.4 и я не могу запустить git checkout --recurse-submodules master
, я добавил этот GIT PPA (я использую Ubuntu)так как версия в диспетчере пакетов ОС была старше, обновил git до 2.19, запустил команду и все работало просто отлично.
Я использовал команду:
sudo add-apt-repository ppa:git-core/ppa
sudo apt-get update
apt-get install --only-upgrade git
РЕДАКТИРОВАТЬ2
Странно, я только заметил, когда переключаюсь на ветку «dev», что папка удаленного подмодуля все еще там, хотя .gitmodules не показывает подмодуль в списке.Также во время проверки в этой ветке я получил сообщение warning: unable to rmdir 'ol/ol-layerswitcher': Directory not empty
.
Я предполагаю, что теперь эта папка больше не рассматривается как подмодуль, но она все еще там.Как я могу избавиться от него из ветки dev, а не из master-ветки (это был мой первоначальный вопрос), если это возможно?
FINAL ANSWER
Okответил сам.Мне просто нужно было удалить флодер без git rm
.Теперь:
- ветке dev нечего зафиксировать
- папка подмодуля отсутствует
- когда я переключаюсь на нее, я не получаю никакого сообщения
ЗАКЛЮЧИТЕЛЬНЫЙ ОТВЕТ НЕ ИСТИНА!
Просто хотел добавить, что удаление файлов заставило их исчезнуть и в основной ветке.Единственное, что я мог сделать, очевидно, это жить с папкой submodules на ранчо devb, но просто «игнорировать» их с помощью .gitignore
, чтобы не выдвигать их в мою удаленную ветку dev.