Ответ 1
Вот как вы можете сделать это с помощью фильтров git:
- Создать/открыть файл gitattributes:
<project root>/.gitattributes
(будет совершено в репо)
ИЛИ<project root>/.git/info/attributes
(не будет участвовать в репо)
- Добавьте строку, определяющую файлы для фильтрации:
*.rb filter=gitignore
, т.е. запустить фильтр с именемgitignore
для всех файлов*.rb
- Определите фильтр
gitignore
в вашемgitconfig
:$ git config --global filter.gitignore.clean "sed '/#gitignore$/'d"
, т.е. удалить эти строки$ git config --global filter.gitignore.smudge cat
, то есть ничего не делать при извлечении файла из репо
Примечания:
Конечно, это для рубиновых файлов, применяемых, когда строка заканчивается на #gitignore
, применяемых глобально в ~/.gitconfig
. Измените это так, как вам нужно.
Внимание !!
Это оставляет ваш рабочий файл отличным от репо (конечно). Любая проверка или перебазировка будет означать, что эти строки будут потеряны! Этот прием может показаться бесполезным, поскольку эти строки постоянно теряются при проверке, перебазировании или извлечении, но у меня есть конкретный вариант использования, чтобы использовать его.
Просто git stash save "proj1-debug"
, пока фильтр неактивен (просто временно отключите его в gitconfig
или что-то в этом роде). Таким образом, мой код отладки всегда может быть git stash apply
для моего кода в любое время, не опасаясь, что эти строки будут случайно зафиксированы.
У меня есть возможная идея для решения этих проблем, но я попробую реализовать ее в другой раз.
Спасибо Руди и jw013 за упоминание фильтров git и атрибутов gitatributes.