Я добавил это в свой файл .gitignore:
# JPEG
*.jpg
*.jpeg
*.jpe
*.jif
*.jfif
*.jfi
# JPEG 2000
*.jp2
*.j2k
*.jpf
*.jpx
*.jpm
*.mj2
# JPEG XR
*.jxr
*.hdp
*.wdp
# Graphics Interchange Format
*.gif
# RAW
*.raw
# Web P
*.webp
# Portable Network Graphics
*.png
# Animated Portable Network Graphics
*.apng
# Multiple-image Network Graphics
*.mng
# Tagged Image File Format
*.tiff
*.tif
# Scalable Vector Graphics
*.svg
*.svgz
# Portable Document Format
*.pdf
# X BitMap
*.xbm
# BMP
*.bmp
*.dib
# ICO
*.ico
# 3D Images
*.3dm
*.max
Найдено здесь.
Затем я добавил несколько файлов .png
, зафиксировал это изменение и отправил его, но файлы отображаются, если я выполняю git status
.
geändert: skin/frontend/venedor/custom/images/kreis_rot_weiss.png
geändert: skin/frontend/venedor/custom/images/kreis_weiss.png
Что я делаю неправильно?
Я думаю, что эти файлы были в промежуточной области до того, как я внес свои изменения в файл gitignore. Я выполнил git reset --hard HEAD
и снова добавил свои файлы png, и теперь они не появляются, если я звоню git status
Таким образом, .gitignore будет применяться только к новым файлам, а не к файлам, уже находящимся в промежуточной области.
Индекс также называется «промежуточной областью», поэтому ваш ответ правильный. Однако я думаю, что некоторые люди думают о «промежуточной области» как о части индекса, который не совпадает фиксирует HEAD
. Все файлы находятся в staging area, просто обычно наиболее из них соответствуют HEAD
фиксации, так что Git ничего о них не говорит.
Еще одна вещь, которую я хотел бы показать тем, кто плохо знаком с идеей индекса / промежуточной области / кеша в Git, заключается в том, что git ls-files --stage
фактически отображает все содержимое промежуточной области. Это единственный способ увидеть, что внутри напрямую! В большом репозитории это производит огромное количество вывода, поэтому git status
показывает, что в нем, с помощью сравнение для коммита HEAD
вместо того, чтобы показывать все.
Хорошее понимание @torek!
Точнее, перечисление файла в
.gitignore
не имеет никакого эффекта, если файл отслеживаются. Файл отслеживается тогда и только тогда, когда он находится в индексе прямо сейчас. Сделавgit add
ранее, он было в индексе. Выполнениеgit reset --hard HEAD
заставило индекс соответствоватьHEAD
фиксации; его не было в коммитеHEAD
, поэтому теперь его не было в индексе.