Skip to content

Latest commit

 

History

History
35 lines (24 loc) · 2.61 KB

File metadata and controls

35 lines (24 loc) · 2.61 KB

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

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

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

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

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

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

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

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

git rm -r --cached Эта удобная команда применяет 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'