Из соответствующей документации Git :
Шаблоны, которые являются специфическими для конкретного репозитория, но которые не должны использоваться совместно с другими связанными репозиториями (например, вспомогательные файлы, которые находятся внутри репозитория, но специфичны для рабочего процесса одного пользователя), должны быть помещены в $GIT_DIR/info/exclude
файл.
.git/info/exclude
Файл имеет тот же формат , как и любой .gitignore
файл. Другой вариант - установить core.excludesFile
имя файла, содержащего глобальные шаблоны.
Обратите внимание, что если у вас уже есть нетегированные изменения, вы должны выполнить следующее после редактирования шаблонов игнорирования:
git update-index --assume-unchanged <file-list>
Примечание$GIT_DIR
: это обозначение используется во всем руководстве по git просто для указания пути к хранилищу git. Если задана переменная окружения, она будет переопределять местоположение любого репо, в котором вы находитесь, что, вероятно, не то, что вам нужно.
Изменить : Другой способ заключается в использовании:
git update-index --skip-worktree <file-list>
Обратитесь к этому:
git update-index --no-skip-worktree <file-list>
git update-index --assume-unchanged [<file>...]
после внесения дополнения в исключаемый файл. Изменения не будут приняты до тех пор.skip-worktree
скорее всего, предпочтительнееassume-unchanged
.Обновление : рассмотрите возможность использования
git update-index --skip-worktree [<file>...]
вместо этого, спасибо @danShumway! См. Объяснение Бореалида о различии двух вариантов .Старый ответ:
Если вам нужно игнорировать локальные изменения в отслеживаемых файлах (у нас это происходит с локальными изменениями в конфигурационных файлах), используйте
git update-index --assume-unchanged [<file>...]
.источник
git update-index --assume-unchanged my-file.php
его, чтобы его начали игнорировать. Спасибо за совет!git update-index --no-assume-unchanged my-file.php
.git/info/exclude
вы хотите (чтобы не загрязнять часто используемые и отслеживаемые .gitignore)--assume-unchanged
прежде чем читать ваше обновление . Я расстался с,--no-assume-unchanged
а затем сделал--skip-worktree
... Я в чистоте?Добавьте следующие строки в раздел [alias] вашего файла .gitconfig
Теперь вы можете использовать,
git ignore my_file
чтобы игнорировать изменения в локальном файле иgit unignore my_file
прекратить игнорировать изменения.git ignored
списки игнорируемых файлов.Этот ответ был получен с http://gitready.com/intermediate/2009/02/18/temporary-ignoring-files.html .
источник
У вас есть несколько вариантов:
.gitignore
файл в рабочем каталоге (или примените его автоматически с помощью topgit или другого такого инструмента исправления).$GIT_DIR/info/exclude
файл, если это относится только к одному дереву.git config --global core.excludesfile ~/.gitignore
и добавьте шаблоны к вашему~/.gitignore
. Этот параметр применяется, если вы хотите игнорировать определенные шаблоны для всех деревьев. Я использую это для.pyc
и.pyo
файлов, например.Кроме того, убедитесь, что вы используете шаблоны, а не явно перечислите файлы, если это применимо.
источник
git config --global
установить глобальную опцию.Я думаю, что вы ищете:
которые игнорируют изменения, сделанные локально
Вот http://devblog.avdi.org/2011/05/20/keep-local-modifications-in-git-tracked-files/ более подробное описание этих решений!
отменить использование:
источник
--skip-worktree
и--assume-unchanged
на этот вопрос SO--skipworktree
, если я потом передумаю и захочу снова начать отслеживать файл?git update-index --no-skip-worktree <file>
Вы можете установить некоторые псевдонимы git, чтобы упростить этот процесс. Это редактирует
[alias]
узел вашего.gitconfig
файла.Ярлыки, которые это устанавливает для вас, следующие:
git ignore config.xml
config.xml
не позволяет вам случайно зафиксировать эти изменения.git unignore config.xml
config.xml
позволит вам снова зафиксировать эти изменения.git ignored
Я построил их, ссылаясь на ответ phatmann - который представляет
--assume-unchanged
версию того же самого.Версия, которую я представляю, использует
--skip-worktree
для игнорирования локальных изменений. См . Ответ Бореалида для полного объяснения различий, но, по сути--skip-worktree
, цель состоит в том, чтобы разработчики могли изменять файлы без риска их изменения .git ignored
Команда , представленная здесь используетgit ls-files -v
и фильтрует список , чтобы показать только те записи , начиная сS
тега.S
Тег обозначает файл, статус которого является «пропустить worktree». Для полного списка статусов файлов, показанныхgit ls-files
: см. Документацию для-t
опции наgit ls-files
.источник
'!git ls-files -v | grep "^S"'
? Команда не работает для меня с этим там .. и, кажется, работает нормально с ее удалением.Expansion of alias 'ignored' failed; 'git' is not a git command
. Это имеет смысл; без восклицательного знака: git псевдоним вашей командыgit git ls-files …
.git ignore <filename>
он применяется только к этому каталогу. И когда вы, наконец, захотите внести свои изменения в этот файл, зафиксировать и передать на удаленный компьютер, просто используйте удобный инструмент,git unignore <filename>
чтобы временно начать отслеживать его снова! Спасибо!Вы можете просто добавить файл .gitignore в свой домашний каталог, то есть
$HOME/.gitignore
или~/.gitignore
. Затем скажите git использовать этот файл с командой:Это обычный файл .gitignore, на который ссылаются git при принятии решения, что игнорировать. Поскольку он находится в вашем домашнем каталоге, он применяется только к вам и не загрязняет файлы проекта .gitignore.
Я использовал этот подход в течение многих лет с отличными результатами.
источник
git check-ignore <file-name>
для проверки. ЛМК, если у тебя это работает=
:git config --global core.excludesfile ~/.gitignore
.gitignore
файл в домашний каталог и сказал git использовать его вместо этого, затем удалил файлы, которые я хотел бы отследить локально. Однако после того, как я отправил изменения, удаленный репозиторий также удалил эти файлы. Я сделал что-то неправильно?.gitignore
о игнорировании файлов, которые существуют в вашем локальном каталоге. То, что вы должны были сделать, этоgit rm --cached
удалить их из репозитория, но оставить их в вашем локальном хранилище. Вы должны иметь возможность вернуться к своему предыдущему коммиту с помощью чего-то вродеgit reset --soft HEAD^
отмены этого коммита и восстановления ваших файлов. В этом прелесть мерзавца: все это есть в твоей истории.Чтобы игнорировать неотслеживаемые файлы, особенно если они находятся в (нескольких) папках, которые не отслеживаются, простое решение заключается в добавлении
.gitignore
файла в каждую неотслеживаемую папку и вводе в одну строку, содержащую,*
за которой следует новая строка. Это действительно простое и понятное решение, если неотслеживаемые файлы находятся в нескольких папках. Для меня все файлы были из единственной неотслеживаемой папки,vendor
и вышеприведенное просто сработало.источник
Если в вашем репозитории еще нет файла .gitignore, то простое решение - создать файл .gitignore и добавить
.gitignore
в него список файлов, которые следует игнорировать.источник
.gitignore
файл в верхней части. Но мои грязные файлы находятся в глубокой папке, поэтому я просто добавил свои собственные.gitignore
рядом с ними. +1