2016-11-18 4 views
0

Я все еще изучаю свой путь вокруг git. Перед слиянием, журнал мерзавец говорил мне что-то вроде ....git merging and log message

commit 9588d21a81d0f8a977c8d0651eee9f56eaf4186d 
Merge: 0367c67 fbd02fc 
Author: me <[email protected]> 
Date: Thu Nov 17 17:09:25 2016 -0600 

    On branch branch1 

    ... 

Я хотел объединить branch1 с branch0, так что я выдал команду слияния:

> git checkout branch0 
> git merge branch1 

К моему удивлению, он пошел Без промедления. Результат выглядел примерно так:

Updating e57618a..9588d21 
Fast-forward 
src/file1.c       | 235 +++++++++++++++++++++++++++++++++++++++++++++++++++-------- 
src/blah.h       | 15 +++- 
src/file2.c       | 2 - 
src/main.c       | 91 +++++++++++++++++------ 
... 

11 files changed, 811 insertions(+), 100 deletions(-) ... 

Не конфликтует ни с чем. AFAICT. Тем не менее, когда я выполняю команду журнала мерзавца, то никаких признаков этого объединения не состоявшиеся, а старые совершить в branch1 еще в верхней части журнала:

commit 9588d21a81d0f8a977c8d0651eee9f56eaf4186d 
Merge: 0367c67 fbd02fc 
Author: me <[email protected]> 
Date: Thu Nov 17 17:09:25 2016 -0600 

    On branch branch1 

    ... 

Является ли это поведение следует ожидать ? Я ожидал хотя бы того, что ветвь теперь будет показана как branch0. Что произойдет в этот момент, если я попытаюсь удалить branch1?

+0

Состояние git показывает, что вы находитесь на ветке1 или ветке 0? И, после слияния, появилось ли сообщение что-то вроде того, что выполняется ускоренное слияние? –

+0

@JoseB git status говорит, что я на ветке 0. Слияние git действительно говорило что-то о «Fast-forward». Я добавляю некоторые детали в редактирование на мой вопрос. Благодарю. –

ответ

2

Основываясь на ваших комментариях, похоже, что git выполнил простую перемотку вперед-назад. В основном вы сделали одну или несколько коммитов в ветке1, а затем объединили эту ветвь назад в ветвь 0, поэтому git просто переместил указатель ветки 0, чтобы указать на последний фиксатор в ветке1.

Это ускоренное слияние. Некоторым людям это не нравится, и вы хотите увидеть явное слияние, в этом случае вам нужно использовать флаг -no-ff при выдаче команды слияния.

В приведенной ниже рисунке из git book может помочь проиллюстрировать следующим образом:

two git branches before a fast-forward merge

Когда мерзавец выполняет быстро вперед объединить мастер-ветви (или branch0 в вашем случае) просто перемещается в точку, чтобы совершить С3. Никаких дополнительных коммитов не создается.

Если вы удаляете ветвь 1, ничего не теряется, так как branch0 все еще указывает на последнюю фиксацию, которая появилась в ветке1. Вы можете проверить его, выполнив следующую команду (пока на ветке 0).

git branch --merged

Он должен показать branch1, которую вы можете удалить с:

git branch -d branch1

Git будет выдавать предупреждение, если вы пытаетесь удалить, не объединенное отделение в любом случае, и вы бы для принудительного удаления с -D

+0

Так значит ли это, что я в порядке? Что произойдет, если я удалю branch1? Благодарю. –

+0

Да, вы в порядке, если вы удаляете ветвь1, ничего не потеряно, так как branch0 все еще указывает на последнюю фиксацию, которая поступает из ветки1. –