@Maxksks

Возможно ли игнорировать файл/папку через .gitignore, которые уже есть в репозитории?

Мне нужно сделать так, чтобы с репозитория можно было склонировать проект, но изменения в конкретных файлах и папках не должны отслеживаться, то есть на репозитории должна всегда должна быть их первоначальная версия.
Я пытался игнорировать ранее закомиченный файл
$ echo debug.log >> .gitignore
  
$ git rm --cached debug.log
rm 'debug.log'
  
$ git commit -m "Start ignoring debug.log"


или же комитить игнорируемый файл
$ cat .gitignore
*.log
  
$ git add -f debug.log
  
$ git commit -m "Force adding debug.log"

Но в первом случае файл пропадает из репозитроия.
Во втором он перестает быть игнорируемым.
  • Вопрос задан
  • 473 просмотра
Решения вопроса 1
sergey-kuznetsov
@sergey-kuznetsov Куратор тега Git
Автоматизатор
Нет, если файл уже попал в репозиторий, то он будет отслеживаться до тех пор, пока ты его оттуда не удалишь.

Игнор действует только на те файлы, которые ещё не отслеживаются. Помогает СЛУЧАЙНО не добавить файл. Но лаже игнор не запрещает принудительно загнать файл в репозиторий.

Если нужно игнорировать файлы конфигурации или секреты, то обычно делают для них шаблон и к имени файла добавляют расширение .sample например. А при реальном развёртывании на основе шаблона создают уже нормальный файл с реальными данными.

Ещё есть трюк с временным игнорированием изменений в файле, ранее уже добавленном. Но он будет работать только в локальной копии репозитория и только после ввода команды
git update-index --assume-unchanged файл
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
scottparker
@scottparker
можно, добавляешь debug.log в гитигнор и сбрасываешь кеш gita для этого файла ( в первом варианте две первые строчки вроде верны, третья - удаляет файл - хз зачем)
Ответ написан
Комментировать
shabelski89
@shabelski89
engineer
Вы можете удалить файл из индекса, то есть при первоначальном init файл будет, а дальше вы убираете его из индекса и файл останется, а дальнейшие изменения с ним не будут отслеживаться.
git rm --cached <file>
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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