Разное

Gitignore не работает: git — Не игнорируются файлы в .gitignore

Содержание

git — Не игнорируются файлы в .gitignore

Подозреваю, что вы добавили файлы в индекс раньше, чем начали игнорировать. То есть до той git add ., который на скриншоте, была еще одна такая команда. Чтобы узнать точно, не хватает git status перед добавлением.

Если файл уже был добавлен, то изменение в .gitignore не вызывает удаления из текущего индекса (что логично и безопасно).

Если файлы только добавлены, но еще не включены в коммит

В данном конкретном случае именно так и есть. При этом достаточно удалить их из индекса. Данная команда возвращает индекс к HEAD, то есть состоянию последнего коммита.

git reset <file-name>

Вы можете заметить, что сам Git предлагает использовать другую команду:

git rm --cached <file-name> 

В данном случае эти команды эквивалентны. Такое дублирование появилось в результате эволюционного развития функционала Git. Это в том числе отражено в документации и в сообщениях Git: где-то рекомендуется reset, где-то rm --cached.

Если игнорируемые файлы уже есть в последнем коммите

Возможна и такая ситуация, на всякий случай я опишу и ее. Здесь reset не сработает, нужен rm. Аргумент --cached заставляет Git удалить файл из индекса, но не трогать рабочую область. То есть он буквально индексирует удаление файла, хотя этого удаления не было. Если сделать это с файлом, который не игнорируется, то после коммита он будет в категории неотслеживаемых (untracked).

git rm --cached <file-name> 

Если нужно убрать целую игнорируемую папку, добавляем ключ -r:

git rm -r --cached <path>

Эта удобная команда применяет rm ко всем файлам, указанным в .gitignore:

git rm --cached `git ls-files -i --exclude-from=. gitignore` 

Вариант того же для windows powershell:

foreach ($i in iex 'git ls-files -i --exclude-from=.gitignore') { git rm --cached $i }

Теперь результат команды git rm нужно зафиксировать коммитом.

git commit -m'removed gitignored files'

Почему .gitignore не игнорирует мои файлы?

См. изображение ниже. Мой файл .gitignore должен игнорировать все файлы в src/dist,, но это не так.

git

visual-studio-code

gitignore

Поделиться

Источник


Richard    

30 июля 2017 в 13:35

7 ответов


  • gitignore не игнорирует файлы в подкаталоге

    Итак, я хочу, чтобы git игнорировал некоторые файлы в подкаталоге внутри репозитория git. Макет структуры каталогов проекта в основном выглядит следующим образом: GIT_ROOT —project1 ——src Я хочу, чтобы git игнорировал определенные файлы в GIT_ROOT/project1 . Я делаю это, создавая файл…

  • gitignore не игнорирует файлы .DS_Store

    почему gitignore не игнорирует файлы .DS_Store ? это мой файл .gitignore #Directory based project format .idea # Ignore Mac DS_Store files **/.DS_Store #node modules for grunt node_modules #files generated with grunt src/app.js это работает для модулей узлов и src/app.js perfect, но не игнорирует…



230

.gitignore игнорирует только те файлы, которые еще не являются частью репозитория. Если вы уже git add редактировали некоторые файлы, их изменения все равно будут отслеживаться.
Чтобы удалить эти файлы из вашего репозитория (но не из вашей файловой системы), используйте для них git rm --cached .

Поделиться


Elmar Peise    

30 июля 2017 в 13:38



101

Файл . gitignore гарантирует, что файлы не отслеживаются Git остаются непроходимыми.

Простое добавление папок/файлов в файл .gitignore не приведет к их удалению-они останутся отслеживаемыми Git.

Чтобы отследить файлы, необходимо удалить из репозитория отслеживаемые файлы, перечисленные в файле .gitignore. Затем снова добавьте их и зафиксируйте свои изменения.

Самый простой и тщательный способ сделать это-удалить и кэшировать все файлы в репозитории, а затем добавить их обратно. Все папки/файлы, перечисленные в файле .gitignore, не будут отслеживаться. Из верхней папки репозитория выполните следующие команды:

git rm -r --cached .
git add .

Затем зафиксируйте свои изменения:

git commit -m "Untrack files in .gitignore"

Обратите внимание, что все предыдущие коммиты с нежелательными файлами останутся в истории коммитов. При нажатии на GitHub имейте в виду историю фиксации(коммита), которая может содержать файлы .env или client_secret.json .

Лучше всего создать файл .gitignore и заполнить его папками/файлами, которые вы не хотите отслеживать при запуске проекта. Однако часто бывает необходимо добавить в файл .gitignore после того, как вы поймете, что нежелательные файлы отслеживаются и хранятся.

Поделиться


MarckK    

22 ноября 2018 в 12:33



9

gitignore игнорирует только неотслеживаемые файлы.
Ваши файлы помечены как измененные-это означает, что они были зафиксированы, а прошлое и их теперь отслеживает git.

Чтобы игнорировать их, вам сначала нужно удалить их, git rm их, зафиксировать, а затем игнорировать их.

Поделиться


Igal S.    

30 июля 2017 в 13:39


  • gitignore не игнорирует конфигурационные файлы

    Я уже читал этот вопрос , а также Этот, но они, похоже, не работают на меня. У меня есть проект git со следующей структурой каталогов: myapp/ src/ .gitignore build/ Где находится myapp/.gitignore : ### gitignore ### build/ Теперь мне нужно добавить каталог верхнего уровня config , и я хотел бы…

  • .gitignore не игнорирует файлы

    У меня есть папка с исходным кодом. Он содержит следующие файлы и папки: /.git /.vs /bin /obj /src /tests .gitignore docker-compose.dcproj docker-compose.yml Файл .gitignore включает в себя следующие строки: /.vs /bin /obj Я исключаю , что ни один файл из папок .vs , bin и obj не будет включен в…



8

Вы можете использовать это,

git rm -r --cached ./node_modules

например, если вы хотите игнорировать node_modules

Поделиться


sam r    

19 декабря 2019 в 07:41



4

Посмотрите на это: .gitignore не работает
и особенно замечание от ADTC:

Убедитесь, что ваш файл .gitignore использует кодировку ANSI или UTF-8. Если он использует
что-то другое, например Unicode BOM, вполне возможно, что Git не сможет прочитать
файл. — ADTC Dec 14 ’17 at 12:39

Поделиться


Philippe Raemy    

06 декабря 2018 в 10:33



0

Сначала удалите файл index.lock из вашего git repo

rm -f .git/index.lock

а затем добавьте .gitignore

git add .gitignore

Поделиться


KayV    

24 июня 2020 в 07:22



0

Лучше создать файл .gitignore при запуске и упоминании файлов, которые мы хотим проигнорировать.
Если вы хотите игнорировать некоторые файлы, то выполните git rm -r --cached

Поделиться


Shivani    

28 августа 2020 в 09:06


Похожие вопросы:

Git игнорирует файлы, которые не находятся в gitignore

У меня есть репозиторий git, который игнорирует файлы изображений, а также несколько других файлов, но мой файл . gitignore игнорирует только файл config.php . Есть ли где-то какой-то глобальный файл…

. gitignore не игнорирует мои файлы

В настоящее время я использую BitBucket для своих РЕПО с движком git. Я не использую github, так как это частный проект, поэтому я не могу сделать его общедоступным. Когда я создаю свой файл…

.gitignore не игнорирует мои временные файлы vim

У меня возникли проблемы с моим файлом .gitignore. Я провел свое исследование и испробовал множество методов. Следующие шаги происходят, когда я сохраняю свой .gitignore git rm -rf —cached *.php.*…

gitignore не игнорирует файлы в подкаталоге

Итак, я хочу, чтобы git игнорировал некоторые файлы в подкаталоге внутри репозитория git. Макет структуры каталогов проекта в основном выглядит следующим образом: GIT_ROOT —project1 ——src Я…

gitignore не игнорирует файлы .DS_Store

почему gitignore не игнорирует файлы .DS_Store ? это мой файл .gitignore #Directory based project format .idea # Ignore Mac DS_Store files **/.DS_Store #node modules for grunt node_modules #files…

gitignore не игнорирует конфигурационные файлы

Я уже читал этот вопрос , а также Этот, но они, похоже, не работают на меня. У меня есть проект git со следующей структурой каталогов: myapp/ src/ .gitignore build/ Где находится myapp/.gitignore :…

.gitignore не игнорирует файлы

У меня есть папка с исходным кодом. Он содержит следующие файлы и папки: /.git /.vs /bin /obj /src /tests .gitignore docker-compose.dcproj docker-compose.yml Файл .gitignore включает в себя…

Почему мой файл .gitignore не игнорирует конкретные файлы?

Почему мой файл .gitignore не игнорирует конкретные файлы? Мне нужно игнорировать любой файл, который начинается с: .metadata/. Я создал файл git ( .gitignore ): Git игнорировать файл Я добавил…

Gitignore не игнорирует файлы

my git не игнорирует некоторые файлы и папки. это мой git status deleted: storage/app/some_folder/700 700-это файл без расширения мой .gitignore /storage/*.key /storage/app/

.gitignore не игнорирует файл .rubocop.yml

Я только что добавил файл .rubocop.yml в свой проект и добавил его в файл .gitignore , но когда я делаю git status , он появляется как измененный. Я никогда не добавлял этот файл в свой репозиторий….

Файл .gitignore не работает — Все о web разработке на xdan.ru

Информация о материале
Категория: Администрирование WEB сервера

Просмотров: 5233

Отношения с файлом .gitignore у меня никогда не складывались. Он то работал, то не работал. Иногда приходилось ждать, чтобы git проверил изменения в папке сотен фотографий. Плюс сам индекс этой проверки весил очень и очень много. 

А ошибка была в том, что я сперва добавлял весь проект в git

git add --all

А потом, поняв? что лишние файлы проверять не надо, добавлял файл или папку в .gitignore. Как следствие — если git и переставал следить за теми файлами, которые я добавил в файл, то из индекса он их не удалял. Как известно индекс git — это полная копия файлов + изменения. Вот и получается, что если у вас есть сотня файлов, то git их все скоипрует в индекс.

К тому же, — он будет их игнорировать при последующих коммитах, но при этом он будет о них помнить и каждый раз проверять не случилось ли что с ними.

С этим не надо миритmся. Подобно команде git add. У git есть еще команда rm. Она удаляет файл из индекса.

git rm -rf --cached .
git add .

Удаляем все файлы из индекса. А потом их снова добавляем, но уже с учетом .gitignore

В процессе, он напишет что файлы удалены — не бойтесь (лично я чуть кирпичный завод не открыл). Файлы удаляются только из индекса.

Рассказать друзьям




Платная консультация по вопросам 2500 руб/час


Прочитали статью и остались вопросы? Меня зовут Валерий и я её автор. С радостью объясню Вам в скайпе все затруднительные моменты, которые остались за рамками статьи!


Подробнее …

Добавить комментарий

Gitignore не работает

Я решил свою проблему следующим образом:

Прежде всего, я пользователь Windows, но я столкнулся с аналогичной проблемой. Итак, я публикую свое решение здесь.

Есть одна простая причина, почему иногда .gitignore не работает так, как должно. Это связано с поведением преобразования EOL.

Вот быстрое решение для этого

Правка> Преобразование EOL> Формат Windows> Сохранить

Вы можете винить в этом настройки вашего текстового редактора .

Например:

Поскольку я являюсь разработчиком Windows, я обычно использую Notepad ++ для редактирования своего текста, в отличие от пользователей Vim.

Итак, что происходит, когда я открываю свой файл .gitignore с помощью Notepad ++, он выглядит примерно так:

## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore


# See https://help.github.com/ignore-files/ for more about ignoring files.

# User-specific files
*.suo
*.user
*.userosscache
*. sln.docstates
*.dll
*.force
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

Если я открою тот же файл с помощью Блокнота по умолчанию, это то, что я получу

## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## ## Get latest from  https://github.com/github/gitignore/blob/master/VisualStudio.gitignore # See https://help.github.com/ignore-files/ for more about ignoring files. # User-specific files *.suo *.user *.userosscache 

Таким образом, вы, возможно, уже догадались, посмотрев на результат. Все в .gitignore стало однострочным, и так как в начале есть ##, он действует так, как будто все прокомментировано.

Способ исправить это прост: просто откройте файл .gitignore с помощью Notepad ++, а затем выполните следующие действия.

Правка> Преобразование EOL> Формат Windows> Сохранить

В следующий раз, когда вы откроете тот же файл в блокноте по умолчанию, все должно быть правильно отформатировано. Попробуйте и посмотрите, работает ли это для вас.

git — Gitignore не работает

Я решил свою проблему следующим образом:

Прежде всего, я пользователь Windows, но я столкнулся с аналогичной проблемой. Итак, я публикую свое решение здесь.

Есть одна простая причина, почему иногда .gitignore не работает так, как должно. Это связано с поведением преобразования EOL.

Вот быстрое решение для этого

Правка> Преобразование EOL> Формат Windows> Сохранить

Вы можете винить настройки вашего текстового редактора за это.

Например:

Поскольку я являюсь разработчиком Windows, я обычно использую Notepad ++ для редактирования своего текста, в отличие от пользователей Vim.

Итак, что происходит, когда я открываю свой файл .gitignore с помощью Notepad ++, он выглядит примерно так:

## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons. 
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore


# See https://help.github.com/ignore-files/ for more about ignoring files.

# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
*.dll
*.force
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

Если я открою тот же файл с помощью Блокнота по умолчанию, это то, что я получу

## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## ## Get latest from  https://github.com/github/gitignore/blob/master/VisualStudio.gitignore # See https://help.github.com/ignore-files/ for more about ignoring files. # User-specific files *.suo *.user *.userosscache 

Итак, вы, возможно, уже догадались, посмотрев на результат. Все в .gitignore стало однострочным, и, так как в начале есть ##, оно действует так, как будто все прокомментировано.

Способ исправить это прост: просто откройте файл .gitignore с помощью Notepad ++, а затем выполните следующие действия.

Правка> Преобразование EOL> Формат Windows> Сохранить

В следующий раз, когда вы откроете тот же файл в блокноте по умолчанию, все должно быть правильно отформатировано. Попробуйте и посмотрите, работает ли это для вас.

git — .gitignore не игнорирует node_modules

Даже после добавления файла .gitignore в корень репозитория .git я не могу заставить git игнорировать каталог node_modules.

Файлы не были добавлены для отслеживания Git.

Я прошел через более ранние вопросы о переполнении стека, а также попытался добавить строку комментария к первой строке, так как, очевидно, Git не читает первую строку этого файла, и он все еще не работает. Я попытался использовать следующую команду также безрезультатно:

git rm --cached -r .

Кто-нибудь может мне помочь? Содержание . gitignore:

#first line
node_modules/

10

Rimil Dey

5 Фев 2017 в 09:59

5 ответов

Лучший ответ

Даже после добавления файла .gitignore в корень репозитория .git я не могу заставить git игнорировать каталог node_modules.

Файл .gitignore должен быть расположен в корне рабочего дерева (также известного как корень вашего проекта), который находится чуть выше каталога .git. Внутри каталога .git файл не имеет никакого эффекта.

Это имеет смысл, потому что обычно вы хотите поставить этот файл под контроль версий, чтобы поделиться списком игнорируемых файлов со всеми разработчиками проекта. И только файлы внутри рабочего дерева вне .git находятся под контролем версий, каталог .git предназначен для внутреннего хранения Git.

(Если вы хотите игнорировать шаблоны только локально, без добавления управления версиями, вы можете сделать это, определив шаблоны в .git/info/exclude.)

[…] а также попытался добавить строку комментария к первой строке, так как, очевидно, Git не читает первую строку этого файла

Для записи, она тоже читает первую строку, в первой строке .gitignore нет ничего особенного.

6

janos
5 Фев 2017 в 07:12

Я решил проблему, удалив имя файла в .gitignore и сделал его невидимым файлом или точечным файлом, так же, как присвоить ему имя .gitignore и сохранив выражение

node_modules/

В этом файле, так что это работает, и теперь git окончательно игнорирует каталог node-modules. Не знаю точно, почему это работает, но, по крайней мере, работает.

5

Bhargav Rao
23 Авг 2018 в 23:11

В моем случае это было написано в кавычках, как это

'functions/node_modules/'

Вместо

functions/node_modules/

2

Stanislau Buzunko
16 Май 2019 в 12:25

В моем случае это решается преобразованием кодировки файла из ‘Unicode’ в ‘UTF-8 без BOM’, поскольку я создал файл .gitignore через Powershell путем перенаправления вывода.

Изначально я изменил окончание строки с Windows (CRLF) на Linux (LF), но это не помогло.

0

guneysus
11 Янв 2020 в 07:49

Моя структура проекта была следующей:

project_name
 |
 |__ client
 |      |_ node_modules/
 |
 |__ server

$ sudo nano .gitignore 

Changed # dependencies 
        /node_modules to client/node_modules

$ git add .     /* to add modified gitignore file */
$ git status    /* to observe changes */

0

jaminyah
1 Июн 2020 в 22:17

42049390

Настраиваем гит игнор файла в Git и в Phpmyadmin. Не работает gitingnore

Если файл уже был добавлен, то изменение в .gitignore не вызывает удаления из текущего индекса (что логично и безопасно).

Если файлы только добавлены, но еще не включены в коммит

В данном конкретном случае именно так и есть. При этом достаточно удалить их из индекса. Данная команда возвращает индекс к HEAD, то есть состоянию последнего коммита.

git reset <file-name>

Вы можете заметить, что сам Git предлагает использовать другую команду:

git rm --cached <file-name> 

В данном случае эти команды эквивалентны. Такое дублирование появилось в результате эволюционного развития функционала Git. Это в том числе отражено в документации и в сообщениях Git: где-то рекомендуется reset, где-то rm --cached.

Если игнорируемые файлы уже есть в последнем коммите

Возможна и такая ситуация, на всякий случай я опишу и ее. Здесь reset не сработает, нужен rm. Аргумент --cached заставляет Git удалить файл из индекса, но не трогать рабочую область. То есть он буквально индексирует удаление файла, хотя этого удаления не было. Если сделать это с файлом, который не игнорируется, то после коммита он будет в категории неотслеживаемых (untracked).

git rm --cached <file-name> 

Если нужно убрать целую игнорируемую папку, добавляем ключ -r:

git rm -r --cached <path>

Эта удобная команда применяет rm ко всем файлам, указанным в .gitignore:

git rm --cached `git ls-files -i --exclude-from=.gitignore` 

Вариант того же для windows powershell:

foreach ($i in iex 'git ls-files -i --exclude-from=.gitignore') { git rm --cached $i }

Теперь результат команды git rm нужно зафиксировать коммитом.

git commit -m'removed gitignored files'

Внимание! Важно!!! Файлы удалятся при коммите и гитпуле на продакшене!!!
подробнее: тут

Взято отсюда
https://ru.stackoverflow.com/questions/432432/%D0%9D%D0%B5-%D0%B8%D0%B3%D0%BD%D0%BE%D1%80%D0%B8%D1%80%D1%83%D1%8E%D1%82%D1%81%D1%8F-%D1%84%D0%B0%D0%B9%D0%BB%D1%8B-%D0%B2-gitignore

git — gitignore просто не работает.

Я не могу заставить его игнорировать файлы .DS_Store и .gitignore

Это основано на ответе Якуба Джирутки. На первый взгляд я был немного сбит с толку, но попробовал, и это сработало. Вот его ответ, сформулированный — надеюсь — более четко.

Его ответ прост: хранить ненужные файлы в .git / info / exclude (который находится внутри каждого репозитория git). Ставьте каждый на новую строку.

Файл .gitignore полезен для игнорирования файлов и каталогов, которые, как вы знаете, созданы или будут созданы, но являются нежелательными.Тот факт, что вы можете git add .gitignore , а затем зафиксировать это и нажать, действительно полезен. Когда вы клонируете этот репозиторий на другом компьютере, например, все файлы, которые следует игнорировать (например, после ./configure; make; sudo make install; обычно генерирует файлы примеров и множество других ссылок) будет игнорироваться (если они находятся в .gitignore .

Однако иногда неясно, нужен ли файл в репозитории или нужно, чтобы файл просто существовал вне контроля git, как если бы он находился в каталоге, не контролируемом git.Это можно сделать, добавив это в файл исключения внутри файла исключения внутри каталога .git / info .

В каждом репозитории git есть папка .git. Чтобы полностью исключить файл или каталог, перейдите в хороший старый терминал, cd в корень репозитория (т.е. cd src / best_repo_eva ). Затем вы увидите .git / . Затем cd .git / info / . Вероятно, там будет только один файл с именем exclude .Используйте свой любимый редактор (шутка; вы можете использовать крылья бабочек только для фокусировки космических лучей в верхних слоях атмосферы, чтобы перевернуть правильные биты на диске;), чтобы отредактировать exclude таким образом, чтобы он содержал файлы, которые вы хотите исключить на новых строках.

Более простое решение: у вас есть два файла, которые вы хотите исключить: tmp1 и ignoreadf

Подойдите к терминалу и …

  • cd src / best_repo_eva
  • echo -e "tmp tab \ n ign tab " >>.git / info / exclude

Вкладки, очевидно, работают только в том случае, если ваш терминал их поддерживает. Обратите внимание на -e (поддерживает экранирование обратной косой черты) и \ n (выделено пробелом) между двумя файлами.

Сохранение большого количества файлов с похожим окончанием может быть столь же простым, как cd src / best_repo_eva , затем echo -e $ (ls -1 | grep "tmp") >> .git / info / exclude (это ls -ONE , а не ls -L — обратите внимание, что ls -a -1 , к сожалению, не работает).Это сохранит все файлы, содержащие последовательность «tmp», в файле исключения.

.gitignore игнорируется Git

Уже есть несколько отличных ответов, но моя ситуация была утомительной. Я редактировал исходный код установленного программного обеспечения PLM (управление жизненным циклом продукта) на Win10 и впоследствии решил: «Мне, вероятно, следовало сделать это репозиторием git».

Итак, опция кеширования у меня напрямую не работает. Публикация для других, кто, возможно, добавил систему управления версиями ПОСЛЕ выполнения кучи начальной работы И .gitignore не работает, НО, вы можете бояться потерять кучу работы, поэтому git rm --cached не для вас.

! ВАЖНО: Это действительно потому, что я слишком поздно добавил git в «проект», который слишком велик и, кажется, игнорирует мой .gitignore. У меня НИКАКИХ коммитов никогда не было. Я могу уйти с этим 🙂

Во-первых, я только что сделал:

  rm -rf . git
rm -rf .gitignore
  

Тогда мне нужно было иметь представление о моих изменениях. Опять же, это установочный продукт, в который я внес изменения.Слишком поздно для первой фиксации чистой основной ветки. Итак, мне нужен был список того, что я изменил с тех пор, как установил программу, добавив > changed.log к любому из следующего:

PowerShell

  # Получить файлы, измененные с даты.
Get-ChildItem -Path путь \ к \ установленному \ программному обеспечению \ -Recurse -File | Where-Object -FilterScript {($ _. LastWriteTime -gt '2020-02-25')} | Select-Object FullName
  

Баш

  # Получить файлы, измененные за последние 10 дней...
найти ./ -type f -mtime -10
  

Итак, у меня есть список того, что я изменил за последние десять дней (давайте не будем вдаваться в передовые практики, кроме как сказать, да, я сделал это с собой).

Для начала, сейчас:

  git init.
# Создавать и редактировать .gitignore
  

Мне пришлось сравнить мой измененный список с моим растущим .gitignore, запустив git status по мере того, как я его улучшал, но мои правки в .gitignore считываются по ходу.

Наконец, у меня есть список желаемых изменений! В моем случае это шаблон — некоторые темы работают вместе с несколькими конфигурациями xml, специфичными для запуска системы разработки против этого программного обеспечения, которое я хочу поместить в репозиторий, чтобы другие разработчики могли захватить и внести свой вклад… Это будет наша основная ветвь, поэтому мы делаем коммит, продвигаем и, наконец, РАЗВИВАЕМ новую работу!

Мой файл .gitignore игнорируется git, и он не работает — Bytefreaks.net

Иногда, даже если вы не добавляли некоторые файлы в репозиторий, git , кажется, отслеживает их даже после того, как вы добавили их в .gitignore файл.

Это проблема кеширования, которая может возникнуть, и для ее устранения необходимо очистить кеш.

.. затем выполните следующие команды из корневой папки вашего репозитория:
Следующее приведет к отмене отслеживания всех файлов в вашем .gitignore :

git rm -r --cached .;
git add.;
git commit -m "Проблема с неотслеживаемыми файлами устранена, чтобы исправить .gitignore";

 

git-rm удаляет файлы из индекса или из рабочего дерева и индекса. git rm не удалит файл только из вашего рабочего каталога. (Нет возможности удалить файл только из рабочего дерева и при этом сохранить его в индексе; используйте / bin / rm , если вы хотите это сделать.) Удаляемые файлы должны быть идентичны верхушке ветвь, и никакие обновления их содержимого не могут быть помещены в индекс, хотя это поведение по умолчанию можно переопределить с помощью параметра -f .Если задано --cached , поэтапное содержимое должно соответствовать либо кончику ветви, либо файлу на диске, что позволяет удалить файл только из индекса.

-r разрешает рекурсивное удаление, если указано имя каталога в начале.

--cached отменяет этапы и удаляет пути только из индекса. Файлы рабочего дерева, измененные или нет, останутся в покое.

Откуда: git-rm

Чтобы остановить отслеживание отдельного файла, но не удалять его из файловой системы, используйте следующее:

git rm --cached <файл>;

 

Другая проблема: файл удален из.Фильтры gitignore не отслеживаются

Когда вы удаляете что-то из файла .gitignore и файл не отслеживается, вы можете добавить его вручную следующим образом:

git add -f <файл>;
git commit -m "Принудительное повторное добавление проигнорированного файла";

 

Этот пост также доступен на: Греческом

Не игнорируйте .

gitignore | Opensource.com

Я заметил, что многие разработчики не используют файл .gitignore, хотя лучше всего использовать его для обозначения файлов, которые Git не должен отслеживать в системе контроля версий.Поскольку .gitignore может повысить качество вашего кода, вам не следует игнорировать .gitignore в своих репозиториях.

Что такое .gitignore?

Файлы в вашем рабочем репозитории Git могут быть:

  1. Не отслеживается: Изменения, которые не были поставлены или зафиксированы
  2. Отслежено: Помещенные или зафиксированные изменения
  3. Игнорируется: Файлы, которые вы указываете Git игнорировать

Есть некоторые файлы, которые Git должен игнорировать и не отслеживать в вашем репозитории.К ним относятся многие, которые создаются автоматически или зависят от платформы, а также другие локальные файлы конфигурации, такие как:

  1. Файлы с конфиденциальной информацией
  2. Скомпилированный код, например .dll или .class
  3. Системные файлы, например .DS_Store или Thumbs.db
  4. Файлы с временной информацией, такой как журналы, кеши и т. Д.
  5. Сгенерированные файлы, такие как dist папок

Если вы не хотите, чтобы Git отслеживал определенные файлы в вашем репозитории, вы не можете использовать команду Git.(Хотя вы можете остановить отслеживание файла с помощью команды git rm , например git rm --cached .) Вместо этого вам нужно использовать файл .gitignore, текстовый файл, который сообщает Git, какие файлы не следует отслеживать.

Создать файл .gitignore просто; просто создайте текстовый файл и назовите его .gitignore. Не забудьте добавить одну точку (. ) в начало имени файла. Вот и все!

Правила записи файла .gitignore

Согласно документации, «каждая строка в файле. В файле gitignore указывается шаблон. «

В этом контексте «шаблон» может относиться к конкретному имени файла или к некоторой части имени файла, объединенной с символом подстановки. Другими словами, example.txt является допустимым шаблоном, который соответствует файлу с именем example.txt , а ex * txt является допустимым шаблоном, который соответствует файлу с именем example.txt , а также файлу с именем экспорт.txt .

Вот несколько основных правил, которые помогут вам настроить ваш.gitignore файл правильно:

  1. Любая строка, начинающаяся с хеша ( # ), является комментарием.
  2. Символ \ экранирует специальные символы.
  3. Символ / означает, что правило применяется только к файлам и папкам, расположенным в одной папке.
  4. Звездочка ( * ) означает любое количество символов (ноль или более).
  5. Две звездочки ( ** ) указывают любое количество подкаталогов.
  6. Вопросительный знак (? ) заменяет ноль или один символ.
  7. Восклицательный знак (! ) обозначает правило инверсии (т. Е. Включает любой файл, который был исключен предыдущим шаблоном).
  8. Пустые строки игнорируются, поэтому вы можете использовать их для добавления места и облегчения чтения файла.
  9. Добавление / в конце игнорирует все пути к каталогам.

Локальные и глобальные файлы .gitignore

Существует два типа файлов .gitignore:

  • Локальный: Размещается в корне вашего репозитория Git, работает только в этом репозитории и должен быть зафиксирован в репозитории
  • Global: Размещается в корне вашего домашнего каталога, влияет на каждый репозиторий, который вы используете на своем компьютере, не требует фиксации

Многие разработчики используют локальный. gitignore в своем репозитории проектов, но очень немногие используют глобальный файл .gitignore. Наиболее значительные преимущества использования глобального файла заключаются в том, что вам не нужно фиксировать его для использования, а внесение одного изменения влияет на все ваши репозитории.

Преимущества Git ignore

Есть и другие преимущества использования файла .gitignore помимо гарантии того, что определенные файлы не отслеживаются Git:

  1. Это помогает содержать репозиторий кода в чистоте, игнорируя нежелательные файлы.
  2. Он контролирует размер вашего репозитория, что особенно полезно, если вы работаете над большим проектом.
  3. Каждый запрос на фиксацию, push и pull, который вы делаете, будет чистым.

Заключение

Git мощный, но, в конце концов, это просто еще одна компьютерная программа. Это командная работа, направленная на использование передовых методов и обеспечение стабильности вашего репозитория кода, и отчасти это связано с использованием файла .gitignore.

Игнорировать файлы в репозитории Git — Azure Repos

  • 4 минуты на чтение

В этой статье

Azure Repos | Azure DevOps Server 2020 | Сервер Azure DevOps 2019 | TFS 2018 | TFS 2017 | TFS 2015 | VS 2017 | VS 2015

Не каждый файл, созданный или обновленный в вашем коде, следует сохранять в Git.Временные файлы из вашей среды разработки, результаты тестирования и журналы — все это примеры файлов, которые вы создаете, но не являются частью вашей кодовой базы.
Настройте, какие файлы Git отслеживает, с помощью функции gitignore .

Из этого туториала Вы узнаете, как:

  • Используйте gitignore для предотвращения отслеживания файлов
  • Игнорировать файлы только в вашей системе
  • Игнорировать файлы во всех репозиториях в вашей системе
  • Игнорировать изменения в зафиксированных файлах

Использование gitignore для предотвращения отслеживания файлов

Создайте . gitignore в вашем репозитории Git, чтобы предотвратить размещение нежелательных файлов в Git.
Поделитесь .gitignore в ветке по умолчанию в вашем репо. Вы и ваша команда можете обновить файл, чтобы изменить типы файлов, которые следует игнорировать.

Создайте .gitignore

Примечание

Visual Studio 2019 теперь включает новый инструмент Git, который обеспечивает улучшенный опыт при подключении к репозиторию Git. Когда вы включаете этот инструмент, инструмент Team Explorer эффективно отключается при подключении к репозиторию Git.Вы можете приобрести новый инструмент, загрузив Visual Studio 2019 версии 16.6. Чтобы включить и использовать новый инструмент, см. Раздел Git Experience в Visual Studio (предварительная версия).

Visual Studio автоматически создает файл .gitignore в вашем репо, когда вы создаете новое репо для своего проекта.

Загрузите файл шаблона .gitignore для своего типа проекта и настройте его в соответствии со своими потребностями.
Если ваш проект не соответствует шаблону, вы можете создать пустой .gitignore из командной строки.Перейдите в репозиторий Git и выполните одну из следующих команд, используя информацию о репозитории:

Окна

  fsutil file createnew C: \ Users \ frank \ myrepo \ .gitignore 0
  

Linux и macOS

  сенсорный /home/frank/myrepo/.gitignore
  

Git применяет .gitignore к папке и всем дочерним папкам, где он находится. Мы рекомендуем вам поместить ваш .gitignore в корневую папку вашего репо, чтобы избежать путаницы.

Настройте свой .gitignore

Измените .gitignore , чтобы включить типы файлов, пути и шаблоны файлов в ваше репо.
Git начинает игнорировать эти файлы, как только вы обновляете .gitignore . Если другим членам вашей команды нужен такой же набор игнорируемых файлов, обязательно зафиксируйте свои изменения.

Примечание

Visual Studio 2019 теперь включает новый инструмент Git, который обеспечивает улучшенный опыт при подключении к репозиторию Git. Когда вы включаете этот инструмент, инструмент Team Explorer эффективно отключается при подключении к репозиторию Git.Вы можете приобрести новый инструмент, загрузив Visual Studio 2019 версии 16.6. Чтобы включить и использовать новый инструмент, см. Раздел Git Experience в Visual Studio (предварительная версия).

Вы можете отредактировать файл .gitignore для своего репо, перейдя в представление Settings в Team Explorer, затем выбрав Repository Settings . Выберите Edit для вашего .gitignore .

Используйте текстовый редактор, например, в следующем примере, который использует Vim:

  vim / home / frank / myrepo /.gitignore
  

Каждая строка в .gitignore исключает файл или набор файлов, соответствующих шаблону.
Полный синтаксис gitignore очень гибкий.
Вот несколько примеров наиболее распространенных записей:

  # игнорировать отдельный файл
mycode.class

# игнорировать весь каталог
/ mydebugdir /

# игнорировать тип файла
* .json

# добавить исключение (используя!) к предыдущему правилу для отслеживания конкретного файла
! package.json
  

Примечание

Пользователи Windows: все пути к файлам в .В файле gitignore используется разделитель косой черты, а не обратная косая черта.

Игнорировать файлы только в вашей системе

Ваш .gitignore совместно используется членами команды в виде файла, зафиксированного и отправленного в репозиторий Git.
Чтобы исключить файлы только в вашей системе, отредактируйте файл .git / info / exclude в вашем локальном репо.
Изменения в этом файле не передаются другим лицам.
Они применяются только к файлам в этом репо.
Синтаксис этого файла такой же, как и в . gitignore.

Игнорировать файлы во всех репозиториях в вашей системе

Настройте глобальный .gitignore для использования во всех репозиториях в вашей системе с помощью инструмента командной строки git config , как в следующем примере:

  git config core.excludesfile C: \ Users \ frank \ .gitignore_global
  

Этот подход полезен для игнорирования целых типов файлов, которые вы не хотите фиксировать, например, скомпилированных двоичных файлов.

Игнорировать изменения в зафиксированных файлах

Временно игнорировать изменения

Во время разработки удобно прекратить отслеживать изменения файла, внесенного в ваш репозиторий git.Этот подход полезен, когда вы настраиваете параметры или файлы конфигурации, которые являются частью исходного кода проекта, для вашей собственной рабочей среды.

  git update-index --skip-worktree <файл>
  

Возобновите отслеживание файлов с помощью следующей команды:

  git update-index --no-skip-worktree <файл>
  

Вместо этого вы можете использовать следующие параметры. Эти параметры в первую очередь предназначены для маркировки файлов, которые разработчики не должны изменять.

Чтобы отключить отслеживание изменений:

  git update-index --assume-unchanged <файл>
  

Для возобновления отслеживания изменений:

  git update-index --no-accept-unchanged <файл>
  
Окончательно прекратить отслеживание файла

Если файл уже отслеживается Git, .gitignore не применяется.
Git продолжит отслеживать изменения в этом файле.

Если вы хотите прекратить отслеживание файла, вам нужно явно указать Git, что вы хотите, чтобы он был удален из отслеживания.Следуя этим указаниям, файл останется в вашем локальном рабочем каталоге, но больше не будет отслеживаться в Git.

  1. Добавьте файл в свой . gitignore .

  2. Выполните следующую команду:

      git rm --cached <файл>
      
  3. Зафиксируйте удаление файла и обновленный файл .gitignore в своем репо.

Следующие шаги

Git — документация gitignore

Файл gitignore определяет преднамеренно неотслеживаемые файлы, которые
Git должен игнорировать.Файлы, уже отслеживаемые Git, не затрагиваются; см. ПРИМЕЧАНИЯ
подробности ниже.

Каждая строка в файле gitignore определяет шаблон.
Решая, игнорировать ли путь, Git обычно проверяет
шаблонов gitignore из нескольких источников, со следующими
порядок приоритета, от наивысшего к низшему (в пределах одного уровня
приоритет, результат решает последний соответствующий шаблон):

  • Шаблоны, считываемые из командной строки для тех команд, которые поддерживают
    их.

  • Шаблоны читаются из файла .gitignore в том же каталоге
    в качестве пути или в любом родительском каталоге с шаблонами в
    файлы более высокого уровня (до верхнего уровня рабочего дерева) переопределяются
    теми, кто находится в файлах более низкого уровня, вплоть до каталога, содержащего файл.
    Эти шаблоны совпадают относительно расположения
    .gitignore файл. Обычно в проект входят такие
    .gitignore файлов в своем репозитории, содержащих шаблоны для
    файлы, созданные как часть сборки проекта.

  • Паттерны читаются из $ GIT_DIR / info / exclude .

  • Паттерны читаются из файла, указанного в конфигурации
    переменная core.excludesFile .

В какой файл поместить узор, зависит от того, для чего он предназначен.
использоваться.

  • Шаблоны, которые должны контролироваться по версиям и распространяться на
    другие репозитории через клон (т.е. файлы, которые понадобятся всем разработчикам)
    игнорировать) должен перейти в . gitignore файл.

  • Паттерны, которые
    специфичны для конкретного репозитория, но к которым не нужно делиться
    с другими связанными репозиториями (например, вспомогательными файлами, находящимися внутри
    репозиторий, но относятся к рабочему процессу одного пользователя) должны входить в
    файл $ GIT_DIR / info / exclude .

  • паттернов, которые пользователь хочет, чтобы Git
    игнорировать во всех ситуациях (например, резервные или временные файлы, созданные
    выбранный пользователем редактор) обычно переходят в файл, указанный
    ядро.excludesFile в пользовательском файле ~ / .gitconfig . Его значение по умолчанию
    $ XDG_CONFIG_HOME / git / ignore. Если $ XDG_CONFIG_HOME либо не установлен, либо
    пусто, вместо него используется $ HOME / .config / git / ignore.

Базовые инструменты сантехники Git, такие как
git ls-files и git read-tree , чтение
gitignore шаблонов, заданных параметрами командной строки или из
файлы, указанные в параметрах командной строки. Git более высокого уровня
инструменты, такие как git status и git add ,
использовать шаблоны из указанных выше источников.

Git: игнорировать файлы с расширением .gitignore

Git — отличный инструмент для отслеживания всех файлов в проекте, независимо от того, нужно ли вам отслеживать только несколько файлов или тысячи. Но тот факт, что файл существует в вашем проекте, не означает, что вы хотите автоматически отслеживать его и его изменения в течение всего жизненного цикла проекта.

В этой статье мы рассмотрим немного истории о том, почему важно указать Git игнорировать определенные файлы, как это сделать на самом деле и некоторые передовые практики.

Зачем использовать .gitignore?

Ручное игнорирование файлов, которые вы не хотите отслеживать, возможно в небольшом проекте, но как только ваш проект начнет расти и включать десятки или сотни файлов без контроля версий, это может стать большой проблемой. Эти файлы начнут загромождать список «Не отслеживаемые файлы», что может привести к тому, что вы пропустите законные файлы, которые должны быть в репозитории.

Чтобы решить эту проблему, в Git есть механизм «игнорирования» в виде файла с именем .gitignore . С помощью этого файла и очень простого сопоставления с образцом вы можете указать Git, какие типы файлов вы хотите, чтобы он игнорировал и не отслеживал в вашем репозитории. Если имя файла в вашем проекте соответствует одному из шаблонов в файле .gitignore , то Git не будет пытаться отслеживать файл, и он не будет отображаться в списке «Не отслеживаемые файлы».

Какие файлы игнорировать

Во многом это сводится к личным предпочтениям, но в целом я стараюсь следовать этим общим правилам, в зависимости от того, какие файлы до , а не , отслеживать:

  • Системные файлы (i.е. Mac .DS_Store )
  • Файлы конфигурации приложения (например, app.config , .env и т. Д.)
  • Артефакты сборки (например, * .pyc )
  • Установленные зависимости (т.е. node_modules )
  • Недокументированные и личные текстовые файлы (например, todo.txt )
  • Данные и журналы приложений (например, * .log , * .sqlite и т. Д.)

Существует довольно много других типов файлов, которые часто игнорируются, но во многом это зависит от личных предпочтений, например:

  • Файлы конфигурации Dev (т.е.е. .jshintrc )
  • Сгенерированный или минимизированный исходный код (например, * .min.js )
  • .gitignore

Да, обсуждается даже отслеживание самого файла .gitignore .

Приведенные здесь советы могут меняться в зависимости от того, с кем вы разговариваете, поэтому вы можете отнестись к некоторым из них с недоверием. У каждого есть свое мнение о том, что следует или не следует отслеживать, поэтому лучший вариант — рассмотреть обе стороны дискуссии, а затем принять решение для себя, исходя из того, что лучше всего для вашего проекта.

Использование .gitignore

Основы использования этой функции игнорирования довольно просты, и это то, что мы рассмотрим в этом разделе.

Для нашего примера предположим, что у нас есть новый проект со следующими неотслеживаемыми файлами:

  $ git status
О мастере филиала

Начальная фиксация

Неотслеживаемые файлы:
  (используйте "git add  ..." для включения в то, что будет зафиксировано)

    .DS_Store
    .env-dev
    .env-prod
    index.js
    node_modules /
    пакет-замок.json
    package.json
  

Немного бессмысленно отслеживать файлы .DS_Store, и node_modules / в нашем репо, поэтому мы хотим их игнорировать. Для этого мы сначала создадим файл в корневом каталоге проекта с именем .gitignore :

.

  $ сенсорный .gitignore
  

Самый простой и наиболее распространенный способ игнорировать файл — просто добавить полное имя файла в игнорируемый файл. Например, чтобы игнорировать указанные выше файлы, мы хотим добавить следующее:

 .DS_Store
node_modules
  

После сохранения Git покажет нам следующие неотслеживаемые файлы:

  $ git status

...

Неотслеживаемые файлы:
  (используйте "git add  ..." для включения в то, что будет зафиксировано)

    .env-dev
    .env-prod
    .gitignore
    index.js
    пакет-lock.json
    package.json
  

И .DS_Store , и node_modules теперь удалены из списка «Не отслеживаемые файлы», но у нас все еще есть некоторые, от которых мы хотим избавиться, .env-dev и . env-prod . Чтобы избежать явного добавления каждого из них в .gitignore (особенно если нам нужно добавить больше этих файлов для тестовых и промежуточных сред), мы будем использовать подстановочный знак:

  .DS_Store
node_modules
.env- *
  

И теперь наш список «Не отслеживаемые файлы» уменьшился еще больше:

  $ git status

. ..

Неотслеживаемые файлы:
  (используйте "git add  ..." для включения в то, что будет зафиксировано)

    .gitignore
    показатель.js
    пакет-lock.json
    package.json
  

Подстановочный знак ( * ) будет соответствовать чему угодно, кроме косой черты. А использование двух подстановочных знаков подряд ( ** ) с последующей косой чертой будет соответствовать вашему шаблону во всех каталогах. Так, например, public / ** / *. Min.js будет игнорировать все минифицированные файлы JavaScript в общедоступном каталоге , независимо от того, сколько каталогов они находятся в глубине.

Механизм игнорирования Git также поддерживает простой синтаксис, подобный регулярным выражениям, с некоторым дополнительным синтаксисом:

  • [a-zA-Z] : соответствие диапазону символов
  • ? : соответствует 0 или 1 вхождению предыдущего элемента
  • ! : отменяет совпадение или предыдущий символ

Git также позволяет добавлять комментарии к этому файлу, которые начинаются с # .Это очень полезно для организации файла или добавления объяснений того, почему были добавлены определенные шаблоны.

Иерархия файлов .gitignore

Git на самом деле проверяет не только локальный файл .gitignore , для каких файлов он должен игнорировать. Как мы уже видели, наиболее распространенным местом является размещение файла .gitignore в корневом каталоге вашего проекта. Другой вариант — вложить файл .gitignore в каталог вашего проекта. Хотя это менее распространено на практике, это может быть полезно для применения всего файла игнорирования в подкаталоге, который имеет множество собственных правил.

Еще одна полезная функция — это глобальный файл игнорирования. Обычно это файл .gitignore , размещенный в вашем домашнем каталоге:

  $ touch ~ / .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *