2009-11-30 2 views
80

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

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

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

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

ответ

138

Как я нашел in this post, .gitignore работает только для файлов без следа. При добавлении файлов в хранилище, вы можете:

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

или удалить их из хранилища с помощью

git rm --cached <file> 

Edit

This article объясняет, что слишком

+0

'git update-index --assume-unchanged ' не работал (попробовал это), но 'git rm --cached ' выполнил эту работу. Благодаря! – knuton

+2

update-index работал для меня. Сильная проблема, когда git status показывает проигнорированные файлы ... очень раздражает. +1 –

+1

У меня все еще есть эта проблема. Ни одна из вышеперечисленных команд не работала для меня. В обоих случаях git говорит, что он не знает о файлах, о которых идет речь, но они все еще отображаются в статусе git :( – Cfreak

0

От человек ГИТ-lsfiles:

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

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

docs/* 

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

0

как это

git --ignored myfolder 

И покажет статус только для MyFolder

8

Я имел этот вопрос придумать, как хорошо, это, вероятно, потому что вы добавили свои игнорировали каталоги/файлы .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 становятся чистыми.

-1

Это, конечно, работает,

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

0

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

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

## ignore tmp 
/tmp/ 
./tmp/ 

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

4- Commit Изменяет локальную синхронизацию на удаленную (например, github).

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

Смежные вопросы