Переместил папку в подмодуль, теперь получаю сообщение «Неотраженные файлы будут перезаписаны» - PullRequest
12 голосов
/ 15 февраля 2012

Я работаю в команде с большим репо. Недавно мы решили переместить одну из папок в собственный подмодуль

-- aaa
     -- .git
     --  bbb
     --  ccc
     --  www      # this folder is going into its own repo.

Я следовал инструкциям, чтобы отфильтровать папку www в свое собственное хранилище, перечисленное здесь: Отсоединить (переместить) подкаталог в отдельный репозиторий Git . Я переместил папку www из репозитория aaa.

Я удалил каталог из главной ветки, выполнив следующие команды:

 $ cd aaa
 $ git checkout master
 $ git rm -rf www
 $ git commit -m "remove the www/ folder from the aaa repo."

Итак, теперь на мастере дерево выглядит так:

 -- aaa
     -- .git
     --  bbb
     --  ccc

Я хотел бы добавить www в качестве подмодуля, запустив:

$ cd aaa
$ git checkout master
$ git submodule add git@bitbucket.org:kevinburke/www.git www
Cloning into 'www'...
remote: Counting objects: 717, done.
remote: Compressing objects: 100% (392/392), done.
remote: Total 717 (delta 318), reused 711 (delta 317)
Receiving objects: 100% (717/717), 440.52 KiB | 58 KiB/s, done.
Resolving deltas: 100% (318/318), done.

Это отлично работает на мастере. Однако каждый раз, когда я пытаюсь переключиться на другую ветку, я получаю следующую ошибку:

$ cd aaa
$ git checkout other-old-branch
error: The following untracked working tree files would be overwritten by checkout:
    www/1...
    www/2...
    www/3...
    www/4...
Aborting

Как удалить папку www из всех веток репо aaa? Есть около 100 ветвей, поэтому ручное выполнение этого было бы хлопотом.

Я не беспокоюсь о сохранении каких-либо выдающихся изменений, которые существуют в www папках старых ветвей.

1 Ответ

19 голосов
/ 15 февраля 2012

Просто используйте git checkout -f, чтобы поменять ветки, затем удалите их, как обычно, и объединитесь с мастером, чтобы получить представление о подмодуле.

...