Обратите внимание, что git diff
может выполнять множество разных вещей, включая (но не ограничиваясь этим):
- сравнивать один коммит с другим коммитом
- сравнивать любой коммит сindex
- сравнить любой коммит с рабочим деревом
- сравнить индекс с рабочим деревом
Как вы только что отметили в своем редактировании, вы выбираете этопоследний вариант.
Когда вы выбираете сравнение индекса с рабочим деревом, список файлов для сравнения полностью контролируется содержимым индекса.Любые файлы, которые не отслежены , полностью игнорируются.Это отличается от того, как git status
сравнивает индекс с рабочим деревом, но экономит много времени для git diff
, поскольку ему не нужно находить файлы, которые могут быть не отслежены (что в целом является медленной операцией).
Если вы хотите, чтобы Git знал, что файлы существуют, используя элемент указателя, который является своего рода заполнителем, рассмотрите возможность использования git add --indent-to-add
или, для краткости, git add -N
(заглавные N).Я должен также упомянуть, что это состояние («поддельное добавление») было нарушено в течение долгого времени, поэтому существует ряд версий Git, где он ведет себя странно.Также было обновлено в 2.19, чтобы исправить вывод git diff
:
- "git diff" сравнивает индекс и рабочее дерево.Для путей, добавленных с помощью бита intent-to-add, команда показывает их полное содержимое как добавленные, но сами пути не были помечены как новые файлы.По умолчанию они теперь отображаются как новые.