Не помещать игнорируемые файлы в статус git

Я хотел бы, чтобы Git не отображал игнорируемые файлы в git status, потому что наличие тонны документации и файлов конфигурации в списке измененных, но не обновленных файлов делает этот список наполовину бесполезным.

Git показывает эти файлы нормально?

Я помещаю информацию игнорирования в файл .gitignore в корневом каталоге репозитория Git, и они не добавляются при использовании git add ., но кажется, что они также не полностью игнорируются, поскольку они отображаются в вышеупомянутом списке и не отображаются в списке, напечатанном git ls-files --others -i --exclude-standard. Здесь отображаются только файлы, соответствующие шаблонам в ~/.gitignore.

Может быть, потому, что на более раннем этапе я не игнорировал их, и они, таким образом, были совершены хотя бы один раз?


person knuton    schedule 30.11.2009    source источник


Ответы (10)


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

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

или удалите их из репозитория

git rm --cached <file>

Изменить

Эта статья тоже объясняет это

person MBO    schedule 30.11.2009
comment
git update-index --assume-unchanged <file> не помогло (пробовал), но git rm --cached <file> выполнил свою работу. Спасибо! - person knuton; 30.11.2009
comment
update-index работал у меня. Аналогичная проблема, когда статус git показывает игнорируемые файлы ... очень раздражает. +1 - person Abe Petrillo; 10.05.2012
comment
У меня все еще есть эта проблема. Ни одна из вышеперечисленных команд у меня не сработала. В обоих случаях git сообщает, что ничего не знает о файлах, о которых идет речь, но они по-прежнему отображаются в статусе git :( - person Cfreak; 28.12.2012
comment
@Cfreak git status -- <file> Показывает ли изменения, не включенные для фиксации, или файлы без отслеживания для вашего файла? Первый - если у вас уже есть файл в индексе, и мне понадобится дополнительная информация для решения вашей проблемы (лучше создать отдельный вопрос с отображаемыми сообщениями git и просто опубликовать ссылку на него в комментарии). Последний предназначен для файлов, которые не отслеживаются git (пока), но не находятся в .gitignore файле и могут быть свободно добавлены в индекс. - person MBO; 29.12.2012
comment
@MBO - да, это так. Спасибо! Ваш комментарий помог мне найти этот ответ: stackoverflow.com/questions/594757/, которое сработало для меня. - person Cfreak; 31.12.2012
comment
я использовал git rm --cached и теперь в git status я вижу изменения, которые нужно внести deleted: ..., это нормально? - person To Kra; 08.11.2016
comment
Первый вариант работает как шарм. Я уже пробовал второй, и это привело к тому, что файлы были помечены как удаленные, а я определенно не хотел этого. - person Carrm; 10.01.2020
comment
Большинство людей ищут первое решение, а не второе. Будьте осторожны, чтобы не удалить файлы из вашего репозитория (это второе решение). Первый просто проигнорирует статус git и не покажет их. - person Nakayama; 27.05.2021

У меня тоже возникла эта проблема, вероятно, потому, что вы добавили игнорируемые каталог / файлы в .gitignore после того, как они были помечены GIT как «подлежащие отслеживанию» в начальном потоке фиксации.

Итак, вам нужно очистить кеш отслеживания git следующим образом:

git rm --cached -r [folder/file name]

Более подробное объяснение можно прочитать здесь: http://www.frontendjunkie.com/2014/12/stop-git-from-tracking-changes-to.html

Вышеупомянутая команда также удалила остатки папки / файлов из вашего удаленного источника GIT. Таким образом, ваши репозитории GIT станут чистыми.

person newbreedofgeek    schedule 26.04.2016

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

Для одного файла

git rm --cached <file>

На весь проект

Сбросить кеш git. Это хорошая команда, если вы зафиксировали проект, когда файл .gitignore не был добавлен.

git rm -r --cached . 

Зафиксировать изменения

git add . 
git commit -m ".gitignore was fixed." 
person Ramis    schedule 26.06.2018

Это определенно работает,

git rm --cached -r [folder/file name]

person Usman    schedule 03.10.2016

Я предполагаю, что вы не хотите добавлять каталог tmp (платформа Visual Studio)

1- добавьте строки ниже в ваш локальный файл .gitignore

## ignore tmp
/tmp/
./tmp/

3- резервное копирование и удаление папки tmp локально. (Резервное копирование где-нибудь еще, например, на рабочем столе?)

4- Зафиксируйте изменения на локальном, а не на удаленном (например, github).

После этих шагов ваш каталог tmp больше не будет загружен.

person Zen Of Kursat    schedule 17.02.2018

после Внесите изменения в файл .gitignore. следуйте этим простым шагам

git rm -r --cached .

Run git add .

git commit -m "Commit message"

Проверять

git status
person ßãlãjî    schedule 25.01.2021

Из man git-lsfiles:

-i, --ignored
Show ignored files in the output. Note that this also reverses any exclude list present.

Лично я стараюсь хранить файлы doxygen в моем исходном дереве, поэтому я просто добавил это в свой .gitignore (который находится в самом верхнем каталоге моего исходного дерева):

docs/*

Надеюсь, это поможет.

person BastiBen    schedule 30.11.2009

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

Platform: linux

Git version: git version 1.8.3.1

Поместите список файлов, которые следует игнорировать, в файл "exclude", находящийся в следующем месте.

<path till .git directory>/.git/info/exclude

Исходное содержимое файла "исключить"

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~

Окончательное содержание файла "исключить"

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~


*.tar
*.gch
person harshul ar    schedule 20.07.2018

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

Что-то вроде git update-index --assume-unchanged src/main/resources/config.properties , где src / main.resources / config.properties - это образец пути для поиска этого файла в вашем проекте.

Теперь, если вы хотите полностью удалить файл из репозитория, вы можете использовать remove cached вместо `git rm --cached

Этот сценарий может быть применим в следующей ситуации:

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

person Francislainy Campos    schedule 07.02.2020

нравится

git --ignored myfolder

И будет отображать статус только для моей папки

person Alex    schedule 08.04.2015