Git: как удалить каталог из рабочего дерева, но сохранить его в индексе? - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть особая ситуация, когда мне нужно работать над конкретным пакетом, состоящим из 2-х репозиториев, и при этом иметь возможность фиксировать / выдвигать каждое репо.

Вот упрощенный пример:

  • repoA с dirs dirA , dirB , dirB / dir2
  • repoB с dirs dirC , dirB / dir1
  • Мне нужно работать с пакетом, содержащим: dirA , dirB , dirB / dir1 , dirC

Вот что я сделал:

  1. Я начал с клонирования обоих репозиториев.
  2. Затем я добавил в repoA клон dir файл .git / info / exclude, содержащий: dirB, dirC
  3. Затем я создал в repoA клон dir 2 символические ссылки на repoB dirB / dir1 и dirC.
  4. Наконец я удалил в репоА клон dir dirB / dir2.

Вот что я получаю в директории клонирования репо:

  • dirB / dir1 (символическая ссылка на repoB)
  • dirC (символическая ссылка на repoB)
  • git status выдача удаленных файлов в dirB / dir2

Это хорошо для repoB, так как я могу без проблем фиксировать и отправлять свои изменения. Но для repoA, конечно, я не хочу фиксировать / толкать удаление dirB / dir2 ... Есть ли в git что-нибудь, позволяющее сохранять dir в индексе, но не отображать его в рабочем дереве?

Пока я вижу два возможных решения, которые нам не очень нравятся:

  • создайте третий каталог, содержащий символические ссылки на нужные файлы в repoA и repoB ... но это вызовет много дополнительной работы, поскольку repoA содержит в действительности много директорий!
  • создать выделенную ветку в репо из ветки разработки без dirB / dir2. Чтобы облегчить объединение в будущем, объедините новую ветвь с разработкой без удаления dirB / dir2. Не так хорошо, так как это заставило бы создать одну выделенную ветку пакета на ветку repoA, над которой нам нужно работать ...

Любая помощь будет с благодарностью O:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...