Ветвь Git - это указатель на коммит.Когда вы объединяете две ветви (фактически вы объединяете две фиксации), создается новая фиксация, и текущая ветка перемещается в новую фиксацию.Объединенная ветвь не изменяется.
Вот пример.
Текущей ветвью является A
, и есть другая ветвь B
, которая в прошлом отклонилась от A
.
HEAD -> A -> o o <- B
| |
o o
| /
o o
| /
o
|
После git merge B
создается новый коммит (у него есть два родителя, потому что это коммит слияния), и ветвь A
перемещается, чтобы указать на вновь созданный коммит.B
сохраняет свою прежнюю позицию.
HEAD -> A -> o
| \
o o <- B
| |
o o
| /
o o
| /
o
|
После git merge B
, git diff B
отображает изменения, которые находятся в ветви A
, но отсутствуют в ветви B
.Это изменения, выполняемые в левой ветви графика, в коммитах, которые недоступны из B
commit.
HEAD -> A -> o
| \
/-> o o <- B
in A | | |
but not |-> o o
in B | | /
\-> o o
| /
o
|