2016-01-07 3 views
2

мой .gitignore выглядит следующим образом:Игнорируется файл все еще показывает изменения

## Ignore Visual Studio temporary files, build results, and 
## files generated by popular Visual Studio add-ons. 

# Project files 
*.sln 
*.vcxproj 
*.vcxproj.filters 
UpgradeLog.htm 

# User-specific files 
*.suo 
*.user 
*.userosscache 
*.sln.docstates 

# .... 

Теперь все эти файлы игнорируются правильно, за исключением моего файла решения, main.sln. Почему это не игнорируется, когда я специально помещал его в gitignore?

Это связано с тем, что main.sln существует до того, как я добавил его в игнор? Я думал, что это просто прекратит отслеживать его, если я поместил его в игнор, но я думаю, что это не так. Вот скриншот:

enter image description here

Как я могу просто остановка отслеживание изменений для main.sln?

ответ

3

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

Если вы хотите по-настоящему прекратить трафик этого файла, вы должны удалить его из дерева git. Просто выполните, из командной строки:

$ git rm --cached main.sln 

И затем зафиксируйте это изменение. С этого момента ваш файл будет gitignored.

ПРИМЕЧАНИЕ: опция --cached предназначена для сохранения реального файла в рабочем каталоге. Без него файл также будет удален.

+0

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

+0

@SyntacticFructose: поскольку вы собираетесь удалить его из отслеживаемого дерева, не имеет значения, изменен ли он или нет. – rodrigo

0

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

git rm main.sln 
git commit -m"Removing file which should be ignored" 
Смежные вопросы