Применение .gitignore к зафиксированным файлам - PullRequest
378 голосов
/ 23 сентября 2011

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

РЕДАКТИРОВАТЬ: Я тоже хочу удалить их из хранилища.Это файлы, созданные после сборки или для поддержки пользовательских инструментов.

Ответы [ 6 ]

571 голосов
/ 23 сентября 2011

После редактирования .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 в своем репо, и он сработает за вас.!

416 голосов
/ 23 сентября 2011
118 голосов
/ 08 октября 2014

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

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/

71 голосов
/ 31 марта 2017

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

  1. Редактируйте .gitignore по своему желанию
  2. git rm -r --cached .
  3. git add .

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

10 голосов
/ 11 февраля 2015

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

git ls-files -ci --exclude-standard | foreach { git rm --cached $_ }
0 голосов
/ 20 апреля 2017

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

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

  2. Выполнить эту команду

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...