.gitignore - игнорировать все в каталоге, кроме одного файла
Я знаю, что таких вопросов много, но никто не решил мою проблему. Я хочу что-то очень простое - игнорировать все файлы и папки в определенной папке, кроме одного файла. Вот что я пытаюсь:
#Ignore
public/typings/*
#Allow
!public/typings/browser/ambient/jquery/jquery.d.ts
... но файл по-прежнему игнорируется.
Любые предложения?
Ответы
Ответ 1
Если файл был добавлен в предыдущем коммите, прежде чем вы поместите его в git ignore, возможно, ваш .gitignore не работает. У меня была такая же проблема несколько дней назад. Я решил проблему благодаря этому сообщению:
Опубликовать int randallkent
Надеюсь, это поможет вам.
EDIT:
Решение найдено здесь: исключение каталога gitignore не работает
Ответ 2
Кажется, что !
работает только в том случае, если файл находится в одной папке. Возможным обходным путем было бы вложить ту же самую формулировку, пока не дойдете до финального файла. Немного беспорядочно, но он работает.
public/typings/*
!public/typings/browser
public/typings/browser/*
!public/typings/browser/ambient
public/typings/browser/ambient/*
!public/typings/browser/ambient/jquery
public/typings/browser/ambient/jquery/*
!public/typings/browser/ambient/jquery/jquery.d.ts
Ответ 3
Я много боролся с этой темой, позвольте мне поделиться процедурой, которая работала для меня:
1) Добавьте папку верхнего уровня "abc/" в ваш .gitignore 2) Допустим, в "abc/" у вас есть также папки "def/" и "jkl/". Если вы хотите сохранить содержимое "jkl/", вы можете просто сделать:
git add -f jkl/*.php
Хорошо! Теперь все внутри "jkl/" с расширением .php будет отслеживаться git, даже при следующих коммитах, без головной боли!
Я нашел, что это правильное решение для моего случая, потому что я действительно сходил с ума, пытаясь понять, как gitignore сканирует файлы и каталоги.