Использование команды git tag --contains для коммита
На этом этапе мы узнаем, как использовать команду git tag --contains
для определения, какие теги содержат конкретный коммит. Это полезно, когда вам нужно узнать, в какие релизы или версии вашего проекта включено определенное изменение.
Сначала убедимся, что мы находимся в директории нашего проекта. Откройте терминал и перейдите в директорию my-time-machine
:
cd ~/project/my-time-machine
Теперь создадим несколько коммитов и тегов для работы. Добавим новый файл и сделаем коммит:
echo "Another message for the future" > message2.txt
git add message2.txt
git commit -m "Add a second message"
Вы должны увидеть вывод, похожий на следующий:
[master <commit-hash>] Add a second message
1 file changed, 1 insertion(+)
create mode 100644 message2.txt
Теперь добавим тег этому коммиту. Назовем его v1.0
:
git tag v1.0
Эта команда не выводит никаких результатов, но создает тег, указывающий на последний коммит.
Сделаем еще один коммит без тега:
echo "A third message" > message3.txt
git add message3.txt
git commit -m "Add a third message"
Вы должны увидеть вывод, похожий на следующий:
[master <commit-hash>] Add a third message
1 file changed, 1 insertion(+)
create mode 100644 message3.txt
Теперь у нас есть два коммита и один тег. Используем команду git log --oneline
, чтобы посмотреть историю коммитов:
git log --oneline
Вы должны увидеть что-то вроде этого (хэши коммитов будут разными):
<commit-hash> (HEAD -> master) Add a third message
<commit-hash> (tag: v1.0) Add a second message
<commit-hash> Send a message to the future
Обратите внимание, что тег v1.0
связан с коммитом "Add a second message".
Теперь найдем, какие теги содержат коммит "Add a second message". Для этого нам нужен хэш этого коммита. Скопируйте хэш коммита рядом с (tag: v1.0)
из вывода команды git log --oneline
.
Замените <commit-hash>
на фактический скопированный хэш и выполните следующую команду:
git tag --contains <commit-hash>
В выводе вы должны увидеть v1.0
, так как этот тег напрямую указывает на этот коммит.
Теперь попробуем найти, какие теги содержат первый коммит ("Send a message to the future"). Скопируйте хэш этого коммита из вывода команды git log --oneline
.
Замените <first-commit-hash>
на фактический хэш и выполните:
git tag --contains <first-commit-hash>
В выводе вы по-прежнему должны увидеть v1.0
. Это потому, что тег v1.0
находится на коммите, являющемся потомком первого коммита. Флаг --contains
проверяет, является ли указанный коммит предком коммита, на который указывает тег.
Эта команда очень полезна, когда вам нужно определить, в какие версии вашего программного обеспечения включена конкретная исправление ошибки или новая функция.