Задать вопрос

Удаление файлов из репозитория Git?

Имеется следующая проблема. Гуглёж особо ни к чему ни привел.

Есть develop и production репозитории git, а между ними bare репозиторий. Рабочая копия приложения содержит гораздо больше файлов, чем нужно хранить в репозитории. При этом в репозитории заведомо присутствуют лишние для него файлы, которые в процессе работы нужно находить и удалять из репозитория (но не из рабочей копии). Казалось бы, нужно использовать git rm --cached для удаления файлов из под контроля, добавление их в gitignore и все.
Если на dev репозитории выполнить git rm --cached, то файлы действительно удалятся из индекса, при этом останутся в локальной рабочей копии. Однако после отправки их в bare репозиторий и при последующем pull на production (или любом другом репозитории) эти файлы, если они присутствовали, будут удалены как из репозитория, так и из рабочей копии.

Собственно вопрос, можно ли этого избежать? Нужно иметь возможность удалять файлы из репозитория, оставляя их как в своей рабочей копии, так и во всех остальных.
  • Вопрос задан
  • 43812 просмотров
Подписаться 6 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • ProductStar
    Python + Flask + Git: веб-разработка с нуля
    2 месяца
    Далее
  • Учебный центр IBS
    DEV-007 Введение в систему контроля версий Git
    1 неделя
    Далее
  • Stepik
    Git (система контроля версий)
    1 неделя
    Далее
Решения вопроса 1
Комментировать
Пригласить эксперта
Ответы на вопрос 2
akashtrih
@akashtrih
Никак нельзя избежать удаления файлов в других репозиториях.
Как вариант, создать новый репозиторий с уже правильно настроенным .gitignore.
Или пересоздать удаленный файл вручную в каждом удаленном репозитории после выполнения pull.
Ответ написан
Комментировать
@domgroup
Добавить в .gitignore и удалить с опцией --cached командой
git rm --cached /path/to/file
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
Made In Dream Санкт-Петербург
от 100 000 до 220 000 ₽
от 250 000 до 320 000 ₽