Оказывается, я добавил skip-worktree
в мой файл [1]
git update-index --skip-worktree path/to/file
и забыл. Вы можете отменить это с помощью:
git update-index --no-skip-worktree path/to/file
ls-files
с -v
раскрыл статус файла в моем случае:
git ls-files -v | grep path/to/file
S path/to/file
Буквы git ls-files -v
будут иметь префикс перед и означают:
# H: cachead
# S: skip-worktree
# M: unmerged
# R: removed/deleted
# C: modified/changed
# K: to be killed
# ?: other
# lowercase letter: assume-unchanged
Чтобы определить вашу проблему
Файл игнорируется git?
git check-ignore * **/* | grep path/to/file
git ls-files --exclude-standard --ignore
Если файл указан в списке, где-то есть правило игнорирования, которое его исключает. [2] [3] Найти его в один из этих файлов:
less .gitignore
less ~/.gitignore
less %USERPROFILE%\.gitignore # <- Probably the same file as the above one
less $( git config --global core.excludesfile )
less $( git config --system core.excludesfile )
less ${GIT_DIR:-.git}/exclude
Файл помечен assume-unchanged
git ls-files -v | grep path/to/file
Если файл имеет префикс в нижнем регистре, он помечается assume-unchanged
. Исправить это с помощью:
git update-index --no-assume-unchanged path/to/file
Файл помечен skip-worktree
git ls-files -v | grep path/to/file
Если файл имеет префикс S
, он помечается skip-worktree
. Исправить это с помощью:
git update-index --no-skip-worktree path/to/file