
Я не могу понять, что я упускаю, пытаясь помешать Visual Studio 2019 Team Explorer копировать файлы на GitHub, когда они перечислены в файле .gitignore.
Мой файл .gitignore находится в том же каталоге, что и каталог .git. В целом он такой:
# Binaries
/x64/
# VS log files
*.log
*.tlog
# Visual Studio files and folder
/.vs/
Когда я хочу зафиксировать изменения, VS отображает следующее:
Я делаюнетхотите зафиксировать Tetris_Game.exe, ни какие-либо файлы .tlog или .log, ни что-либо из папки .vs. Однако, как вы видите, эти файлы и каталог указаны для фиксации.
Что я упускаю из виду, что должно быть совершенно очевидно?
решение1
Это потому, что все эти файлы с расширениями .exe, .tlog и .log также будут присутствовать в вашем репозитории git. Поэтому любые изменения в этих файлах будут отслеживаться наверняка.
Чтобы .gitignore работал как положено, выполните следующие шаги:
- Удалите локально все файлы, которые вы хотите игнорировать.
- Затем выполните коммит и push. Теперь ваш репозиторий и файл .gitignore находятся в согласованном состоянии.
- Перезапустите VS и выполните pull.
- Создайте свое решение/проект.
Теперь обратите внимание на окно изменений git, эти файлы не должны быть указаны, хотя они созданы на вашей локальной машине.
решение2
Начальная косая черта /.vs/
означает, /x64/
что это абсолютные пути от корня файловой системы.
Для ПК с ОС Windows, где репозиторий находится в любом месте на диске C:, ваш .gitignore будет игнорировать файлы в C:\.vs\
и C:\x64\
.
Удалите начальный слеш и оставьте их просто как .vs/
и x64/
.
Тогда они будут интерпретироваться как пути, относительные к файлу .gitignore.