Использование команды git branch --contains для проверки наличия коммита
На этом этапе мы узнаем, как использовать команду git branch --contains
для определения, в каких ветках содержится определенный коммит. Это полезно, когда у вас есть несколько веток и вы хотите узнать, где находится определенное изменение.
Сначала убедитесь, что вы находитесь в директории проекта:
cd ~/project/my-time-machine
Создадим новую ветку, чтобы продемонстрировать работу этой команды. Назовем ее feature-branch
:
git branch feature-branch
Эта команда создает новую ветку, но не переключается на нее. Вы можете посмотреть список своих веток с помощью команды git branch
:
git branch
Вы должны увидеть что-то вроде этого, причем master
будет подсвечена (это означает, что это текущая ветка):
* master
feature-branch
Теперь получим хэш первого коммита. Мы можем использовать команду git log --oneline
, чтобы увидеть сжатый лог с хэшами коммитов:
git log --oneline
Вы увидите вывод, похожий на следующий (ваши хэши будут другими):
e4f5g6h (HEAD -> master) Update message.txt
a1b2c3d Add a second file
abcdef0 Send a message to the future
Скопируйте хэш первого коммита ("Send a message to the future"). В приведенном выше примере это abcdef0
.
Теперь используем команду git branch --contains
с хэшем первого коммита:
git branch --contains abcdef0
Замените abcdef0
на фактический хэш вашего первого коммита.
В выводе должны быть показаны обе ветки: master
и feature-branch
:
* master
feature-branch
Это говорит нам, что коммит "Send a message to the future" существует как в ветке master
, так и в ветке feature-branch
. Это логично, потому что мы создали ветку feature-branch
находясь на ветке master
, и первый коммит уже был частью ветки master
.
Теперь получим хэш последнего коммита ("Update message.txt"). В приведенном выше примере это e4f5g6h
.
Используем команду git branch --contains
с хэшем последнего коммита:
git branch --contains e4f5g6h
Замените e4f5g6h
на фактический хэш вашего последнего коммита.
В выводе должна быть показана только ветка master
:
* master
Это потому, что последний коммит был сделан в ветке master
после создания ветки feature-branch
. Поэтому ветка feature-branch
не содержит этот коммит.
Команда git branch --contains
является мощным инструментом для понимания взаимосвязи между коммитами и ветками, которая помогает отслеживать, где были интегрированы определенные изменения.