@AlexWeb6667
Web-дизайнер с опытом FullStack разработки

Как поместить папку в игнор, но при этом она была привязана к проекту?

Всем привет, Пилю 2 версии сайта, актуальную, и совершенно новую(Другой движок и куча других папок), как перехожу на new_branch все норм все на месте, как только возвращаюсь на мастер, подтягиваются некоторые папки из new_branch хотя в master их нет, они даже в гит игнор есть, такие как вендор и прочие yii-шные папки, не подскажете как их обозначить, так чтоб они не лезли в другую ветку при смене?Это происходит из за того что папки в гит игнор, они не закреплены за контролем версий, и остаются лежать где лежали, даже при смене веток, цель обозначить папку как часть проекта гит, но чтоб при этом она не пушилась на сервер, есть идеи?
  • Вопрос задан
  • 270 просмотров
Решения вопроса 1
Lobotomist
@Lobotomist
Software Developer
Насколько я понимаю, проблема возникает из-за того, что по умолчанию при чекауте ветки игнорируемые и просто неотслеживаемые (untracked) файлы не удаляются из рабочей директории.

Преамбула

Вы написали, что файлы нового проекта у вас добавлены в .gitignore. Это не сомнительная идея:
  • Получается, что у вас в коде старого проекта есть игнорирование файлов нового проекта. В ветке старого кода не должно быть того, что относится к новому.
  • Если вы игнорируете файлы нового проекта - тогда чтобы их удалить вам нужно либо явно указывать какие файлы нужно удалить либо удалять все игнорируемые файлы. А среди них могут быть такие, которые вам нужны, например, код сторонних дидлиотек, если он у вас есть или локальные конфиги и т.п.


Вы можете убрать из .gitignore старого проекта все, что относится к новому и просто удалять все untracked файлы и папки при чекауте с помощью команды git clean -fd. Но это не очень удобно потому, что
  • При переключении между ветками будет создаваться и удаляться большое количество файлов, а это лишняя нагрузка на ФС и время
  • Вводить данные команды руками скорее всего лениво (правда, можно написать alias для их автоматизации)

Решение

Скорее всего в вашем случае наиболее адекватным решением будет иметь две рабочие директории - для текущей версии проекта и для новой. А в редких случаях, когда у вас так получается, что вы делаете переключение между этими версиями в рамках одной рабочей директории выполнять git clean -fd
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
REZ1DENT3
@REZ1DENT3
web-developer
Есть 2 варианта:
1. gitkeep
2. В нужной вам папке добавьте .gitignore с содержимым:
!.gitignore
*
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы