Прежде всего стоит упомянуть, что это не набор файлов , отслеживаемых веткой или , отслеживаемых (Git) репозиторием , поскольку эти фразы не очень хорошо определено. Результатом git ls-files -r
при фиксации является набор файлов в этой фиксации .
Слово отслеживается в Git довольно перегружено, но когда мы поговорим о отслеживаемом файле по сравнению с неотслеживаемым файлом в Git, мы имеем в виду файл, который сейчас или не находится в индексе .
Набор файлов, который будет в индексе Git, если вы используете git checkout
или git switch
для извлечения некоторой конкретной фиксации, обычно составляет 1 набор файлов в этом коммите. В этом смысле вы можете называть эти файлы «отслеживаемыми», но если вы это сделаете, вы запутаетесь. Отслеживаемые файлы - это те, которые сейчас находятся в индексе Git . Вы можете изменить , который установлен в любое время:
git add F
скопирует копию рабочего дерева файла F
в индекс Git. 2 Если раньше его там не было - его не отслеживали - что ж, теперь оно есть, так что теперь оно отслеживается. Или:
git rm --cached F
будет удалить индексную копию файла F. Если она была там раньше, то не сейчас; теперь файл F
не отслеживается. Не имеет значения, находится ли файл F
в каком-то другом коммите или нет, если и пока вы не проверите этот коммит.
Каждый раз, когда вы делаете новую фиксацию, Git делает эту новую фиксацию используя файлы, находящиеся в индексе в то время. Даже команды git commit -a
, git commit --include <em>files</em>
и git commit --only <em>files</em>
работают с индексом, хотя они используют дополнительные временные файлы индекса, чтобы упростить откат обновлений в случае сбоев. (Это делает описание их точного действия, особенно при наличии Git хуков, особенно сложным.)
Между тем, вы можете проверить любой коммит, который у вас есть, используя git ls-files -r
; вам просто нужно использовать имя, которое Git может превратить в правильный коммит ha sh ID. Как вы отметили в комментарии , вы использовали два имени вместо одного.
1 Слово обычно находится здесь, потому что вы можете использовать различные трюки с индексом Git или использовать альтернативный индекс, установив переменную среды GIT_INDEX_FILE
. Кроме того, Git иногда позволяет переносить изменения индекса и / или рабочего дерева через операции фиксации и / или переключения ветвей. Подробнее см. Оформить заказ в другой ветке при наличии незафиксированных изменений в текущей ветке .
2 Если вы установили --assume-unchanged
или --skip-worktree
биты в файле, который в настоящее время находится в индексе, git add
не обновляет индекс из рабочего дерева. Вы также можете использовать GIT_INDEX_FILE
, как в сноске 1.