Применение .gitignore к зафиксированным файлам

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

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

Ответ 1

  • Изменить .gitignore в соответствии с файлом, который вы хотите игнорировать.
  • git rm --cached /path/to/file

См. также:

Ответ 2

После редактирования .gitignore в соответствии с игнорируемыми файлами вы можете сделать git ls-files -ci --exclude-standard, чтобы просмотреть файлы, включенные в списки исключений; вы можете сделать git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached, чтобы удалить их из репозитория (не удаляя их с диска).

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

apply-gitignore = !git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached

(Флаг -r в xargs предотвращает запуск git rm пустым результатом и печать его сообщения об использовании, но может поддерживаться только GNU findutils. Другие версии xargs могут иметь или не иметь аналогичный вариант.)

Теперь вы можете просто набрать git apply-gitignore в своем репо, и это поможет вам!

Ответ 3

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

git update-index --assume-unchanged <file>

и отменить это:

git update-index --no-assume-unchanged <file>

чтобы узнать, какие файлы были установлены таким образом:

git ls-files -v|grep '^h'

кредит для первоначального ответа на http://blog.pagebakers.nl/2009/01/29/git-ignoring-changes-in-tracked-files/

Ответ 4

Убедитесь, что ваше фактическое репо - это последняя версия

  • Отредактируйте .gitignore, как вы пожелаете
  • git rm -r --cached .
  • git add .

затем зафиксируйте как обычно

Ответ 5

Старый вопрос, но некоторые из нас находятся в git-posh (powershell). Это решение для этого:

git ls-files -ci --exclude-standard | foreach { git rm --cached $_ }

Ответ 6

Выполните следующие действия:

  • Добавить путь к gitignore файлу

  • Запустите эту команду

    git rm -r --cached foldername
    
  • фиксировать изменения как обычно.