Git: Игнорирование Файлов, Контролируемых Версиями
The .файл gitignore очень полезен в игнорировании некоторых файлов, которые мы не хотим контролировать. К сожалению, его нельзя использовать, когда файл уже находится под контролем версий. Например, мой .файл gitignore (который уже добавлен в git) может отличаться от того, что хочет мой коллега (например, я хочу игнорировать файлы Vim). Всякий раз, когда я делаю изменения в этом файле, git показывает его как измененный файл. Поэтому мои вопросы:
- есть ли способ, чтобы игнорировать изменения определенный файл, который уже контролируется Git?!
- есть ли способ совершить эти изменения, но сохранить его только для себя? Очевидно, я не хочу использовать ветку, потому что я работаю над определенной веткой.
6 ответов
если вы хотите исключить файлы, относящиеся к вашему процессу (например, временные файлы Vim), отредактируйте (локальный) файл .git/info/exclude
и добавьте туда свои шаблоны исключения. Этот файл предназначен для исключений, специфичных для разработчиков, а не .gitignore
, который предназначен для исключений по всему проекту.
краткое резюме, каждый должен согласиться на то, что добавляется к .gitignore
. Для файлов, с которыми вы не согласны, используйте .git/info/exclude
.
использовать git-update-index чтобы временно игнорировать изменения в файлы, которые уже находятся под контролем версия:
git update-index --assume-unchanged <files>
чтобы отменить это использование:
git update-index --no-assume-unchanged <files>
также посмотреть skip-worktree
и no-skip-worktree
параметры для update-index, если вам нужно, чтобы это сохранялось после git-reset
вы можете использовать эту команду, чтобы получить вы хотите.
git rm --cached path/to/file
или
git rm -r --cached path/ignore/dir
это только удалит трек из git, не удалит реальные файлы.
затем вы можете отредактировать файл игнорирования, чтобы отследить эти файлы или dirs.
Я не могу ответить на общий вопрос (имея git игнорировать отслеживаемые файлы) - это поражает меня как функция, которая была бы гораздо более вредной, чем полезной.
на страница руководства gitignore указывает несколько способов настройки шаблонов для исключенных файлов.в частности, он дает четкие инструкции о том, как использовать эти различные способы:
- шаблоны, которые должны контролироваться версиями и распространяться другие репозитории через clone (т. е. файлы, которые все разработчики захотят игнорировать) должны перейти в .
это значит, что ваш .gitignore
файл не должен отличаться от ваших коллег - он работает по назначению.
шаблоны, которые специфичны для конкретного репозитория, но которые не нужно совместно использовать с другими связанными репозиториями (например, вспомогательные файлы, которые живут внутри репозитория, но специфичный для рабочего процесса одного пользователя) должен войти в .
шаблоны, которые пользователь хочет git игнорировать во всех ситуациях (например, резервное копирование или временные файлы, созданные редактором пользователя по выбору) обычно заходим в файл, указанный
core.excludesfile
пользователя~/.gitconfig
.
вот оно. Указать core.excludesfile
путь к файлу в вашем ~/.gitconfig
файл, а затем поместите в него шаблоны, которые вы хотите исключать.
я писал о три способа исключения файлов в другом месте.
в итоге:
- глобальный файл игнорирования git применяется ко всем репозиториям в этой системе
- The .файл gitignore в репозитории применяет репозиторий и все клоны этого репозитория.
- The .файл git/info/exclude применяется только к этому репозиторию.
нижние элементы в списке имеют приоритет над более высокими элементами, и а !
перед элементом в любом из шаблонов в файле отменяет предыдущее исключение.
эта парадигма видна в другом месте в Git. Например, если вы используете подмодули, url-адрес подмодуля для использования находится в .gitmodules
файл в репозитории, но вы можете переопределить url-адрес для использования в .файл git/config файл.
вот обобщенное, ubiquitos (не индивидуальное) решение для тех, кто использует Git под интерфейсом smartgithg viusal:
- выбрать папку, которую вы хотите игнорировать в окне "хранилищ";
- выберите все файлы из этой папки в окне "файлы" (отобразить неизмененные файлы, щелкнув соответствующий значок фильтра в правой верхней области главного окна);
- нажмите "Удалить" на панели управления (установите флажок "удалить локальные файлы", если вам нужно это);
- фиксации локальных изменений;
- щелкните правой кнопкой мыши на папке в окне "репозитории";
- нажать "игнорировать".