Тестирование с неизмененными файлами
В предыдущих шагах мы рассмотрели, как команды git show --name-only
и git diff-tree -r --name-only
показывают файлы, измененные в определенном коммите. Теперь давайте посмотрим, что произойдет, если мы запустим эти команды для коммита, в котором не было изменено ни одного файла (это не относится к нашему единственному коммиту, но мы можем смоделировать такую ситуацию).
Поскольку в нашем текущем репозитории есть только один коммит, в котором был добавлен файл, запуск этих команд для этого коммита всегда будет показывать message.txt
. Чтобы проиллюстрировать концепцию показа только измененных файлов, представим, что у нас есть коммит, в котором не было изменено ни одного файла (это обычно происходит при слиянии коммитов или коммитах, которые изменяют только метаданные, но в этом упражнении мы сосредоточимся на выводе, когда не перечислены никакие файлы).
Если вы запустите git show --name-only
или git diff-tree -r --name-only
для коммита, в котором не было изменено ни одного файла, то часть вывода, относящаяся к именам файлов, будет пустой.
Давайте заново запустим команды, которые мы изучили, чтобы укрепить концепцию. Убедитесь, что вы находитесь в директории my-time-machine
:
cd ~/project/my-time-machine
Запустите снова git show --name-only
:
git show --name-only HEAD
Вывод будет похож на следующий:
commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9
Author: Jane Doe <[email protected]>
Date: Mon Aug 7 10:00:00 2023 +0000
Send a message to the future
message.txt
Теперь запустите снова git diff-tree -r --name-only
:
git diff-tree -r --name-only HEAD
Вывод будет:
message.txt
Обе команды корректно показывают message.txt
, потому что этот файл был добавлен в этом коммите. Основная идея здесь заключается в том, что эти команды предназначены для перечисления только файлов, которые были изменены (добавлены, удалены или модифицированы) в указанном коммите. Если коммит не изменяет никаких файлов, эти команды (а именно, часть, которая перечисляет файлы) не покажут ничего.
Это поведение важно для понимания масштаба изменений, внесенных коммитом. Оно помогает быстро определить, какие части вашего проекта были затронуты определенным изменением.