Как сравнить рабочее дерево с коммитом?

Я использую

git diff mycommit

для сравнения моего рабочего дерева с mycommit, но он, кажется, игнорирует файлы, не присутствующие в текущем индексе. Вы можете воспроизвести это следующим образом:

git init
echo A > A.txt; git add .; git commit -m A; git branch A
echo B > B.txt; git add .; git commit -m B; git branch B
git reset --hard A
echo BB > B.txt
git diff B

Вывод (по состоянию на версию git 1.7.3.3) пуст. Использование --diff-filter=ACDMRTUXB показывает "deleted file", что тоже неверно, поскольку файл B.txt существует и в рабочем дереве, и в коммите B. ИМХО, файл должен быть показан как измененный. Удивительно, но после добавления файла в индекс он работает, хотя сравнивается не индекс. Как получить правильный diff без него?

31
задан maaartinus 9 December 2011 в 23:05
поделиться