Как мне настроить Git, чтобы игнорировать некоторые файлы локально?
могу ли я игнорировать файлы локально, не загрязняя глобальную конфигурацию git для всех остальных? У меня есть неотслеженные файлы, которые являются спамом в моем статусе git, но я не хочу фиксировать изменения конфигурации git для каждого маленького случайного неотслеженного файла, который у меня есть в моих локальных ветвях.
9 ответов:
С соответствующая документация Git:
шаблоны, которые специфичны для конкретного репозитория, но которые не должны совместно использоваться с другими связанными репозиториями (например, вспомогательные файлы, которые живут внутри репозитория, но специфичны для рабочего процесса одного пользователя), должны входить в .
The
.git/info/exclude
файл имеет тот же формат, что и любой . Другой вариант-установитьcore.excludesFile
имя файла, содержащего глобальная модель.обратите внимание, если у вас уже есть неиндексированных изменений необходимо выполнить следующую после редактирования ваш игнор-моделей:
git update-index --assume-unchanged [<file>...]
Примечание
$GIT_DIR
: это обозначение используется во всем руководство git просто указывает путь к репозиторию git. Если переменная среды задана, то она переопределит местоположение любого РЕПО, в котором вы находитесь, что, вероятно, не то, что вы хотите.
обновление: рассмотрите возможность использования
git update-index --skip-worktree [<file>...]
вместо этого, спасибо @danShumway! Смотрите объяснение Бореалида о разнице двух вариантов.
ответ:
Если вам нужно игнорировать локальные изменения в отслеживаемых файлах (у нас есть это с локальными изменениями в файлах конфигурации), используйте
git update-index --assume-unchanged [<file>...]
.
добавьте следующие строки в раздел [псевдоним] вашего .gitconfig file
ignore = update-index --assume-unchanged unignore = update-index --no-assume-unchanged ignored = !git ls-files -v | grep "^[[:lower:]]"
теперь вы можете использовать
git ignore my_file
игнорировать изменения в локальном файле, иgit unignore my_file
перестать игнорировать изменения.git ignored
список игнорируемых файлов.этот ответ был почерпнут из http://gitready.com/intermediate/2009/02/18/temporarily-ignoring-files.html.
у вас есть несколько вариантов:
- оставьте грязный (или незафиксированный)
.gitignore
файл в вашем рабочем каталоге (или применить его автоматически с помощью topgit или какой-то другой такой патч инструмент).- поместите исключения в свой
$GIT_DIR/info/exclude
файл, если это относится к одному дереву.- выполнить
git config --global core.excludesfile ~/.gitignore
и добавить шаблоны для ваших~/.gitignore
. Этот параметр применяется, если вы хотите игнорировать определенные закономерности между все деревьев. Я использую это для.pyc
и.pyo
файлы, например.кроме того, убедитесь, что вы используете шаблоны и не перечисляете явно файлы, когда это применимо.
Я думаю, что вы ищете:
git update-index --skip-worktree FILENAME
, которые игнорируют изменения, внесенные местными
вот http://devblog.avdi.org/2011/05/20/keep-local-modifications-in-git-tracked-files/ подробнее об этом решении!
вы можете установить некоторые git псевдонимы чтобы сделать этот процесс проще. Это редактирует
[alias]
узла .git config --global alias.ignore 'update-index --skip-worktree' git config --global alias.unignore 'update-index --no-skip-worktree' git config --global alias.ignored '!git ls-files -v | grep "^S"'
ярлыки, которые это устанавливает для вас, следующие:
git ignore config.xml
- git будет делать вид, что он не видит никаких изменений на
config.xml
- предотвращение случайного совершения этих изменений.git unignore config.xml
- git возобновится признавая ваши изменения в
config.xml
- позволяет вам снова зафиксировать эти изменения.git ignored
- git перечислит все файлы, которые вы "игнорируете" в порядке, описанном выше.
я построил их, ссылаясь на ответ фатмана - которая представляет собой
--assume-unchanged
версия то же самое.версия, которую я представляю, использует
--skip-worktree
за игнорирование локальных изменений. Видеть Borealid это для полного объяснения разницы, но по существу ы для разработчиков, чтобы изменить файлы без риска совершения их изменений.The
git ignored
команда, представленная здесь, используетgit ls-files -v
, и фильтрует список, чтобы показать только те записи, начиная сS
тег. ЭлементS
тег обозначает файл, состояние которого"пропустить рабочее дерево". Для полного списка статусов файлов, показанныхgit ls-files
: см документация для наgit ls-files
.
вы можете просто добавить .gitignore файл в ваш домашний каталог, т. е.
$HOME/.gitignore
или~/.gitignore
. Затем сказать Git, чтобы использовать этот файл с помощью команды:git config --global core.excludesfile ~/.gitignore
Это нормально .gitignore файл, который git ссылается при принятии решения, что игнорировать. Поскольку он находится в вашем домашнем каталоге, он применяется только к вам и не загрязняет ни один проект .гитюдного файлы.
Я использую этот подход в течение многих лет с отличными результатами.