Как «объяснить» git'у, что нужно игнорировать файл, который уже побывал в нескольких коммитах (git .ignore почему-то не работает)?
Забыл изначально добавить несколько файлов в git .ignore.
Соответственно, они попали в несколько коммитов, а мне они там совсем не нужны.
При добавлении имен этих файлов git .ignore ничего не происходит. Git продолжает прилежно их обрабатывать.
В чем может быть причина такого поведения и как это можно побороть?
Алексей Тен: в смысле из репозитория? Из рабочей директории, может быть? Или изо всех коммитов?
Последний вариант слишком жесткий и трудоемкий. И вообще, насколько я понимаю, не подойдет для уже за'push'енных коммитов, потому что делается с помощью git filter-branch, который меняет все хэши у предыдущих коммитов.
Алексей POS_troi: погодите-погодите, git rm --cached file.txt убирает файл из индекса (staging area), оставляя его в working directory.
При следующем выполнении, например, git add . и git commit файл в очередной раз закоммитится как ни в чем не бывало, несмотря на запись о нем в .ignore-файле.
Алексей POS_troi: Алексей Тен: прошу прощения, вы правы. Я некорректно составил игнор-файл. Команда git rm --cached file.txt отлично работает. Спасибо большое))
Если честно, ваш вопрос не совсем понятен.
Но если вы добавили некую информацию в репозиторий, а теперь хотите, чтобы git её забыл навсегда, в том числе удалить файл из истории коммитов (например, файл с паролем, или личная информация), то посмотрите сюда: https://help.github.com/articles/remove-sensitive-data/
Спасибо. Выскребать все целиком из истории коммитов не надо. Надо чтобы файл, который уже попадал в коммиты перестал коммититься и не отвлекал бы при просмотре изменений.
А одной записи в .ignore-файле для этого почему-то не хватает.