2013-12-08 3 views
-3

Общий случай слить ветку до его последней фиксации:Git: слияние филиал за исключением последней фиксации

 A---B---C topic 
    /  \ 
D---E---F---G---H master 

Но я хотел бы исключить последний коммит, как это:

 A---B---C topic 
    / \ 
    D---E---F---G master 

Можно ли объединить ветвь topic в мастер без включения topic в последнюю фиксацию?

+0

http://git-scm.com/docs/git-merge Кроме того, почему у вас есть две коммиты с тем же именем? –

+0

Невозможно рассказать, что вы просите. Вы хотите, чтобы вы слили 'C' в' master', не перемещая указатель ветки 'topic'? Что значит «D»? Возможно, вам повезет, если вы покажете нам до/после диаграмм того, что вы пытаетесь сделать. Кроме того, это «пожалуйста», а не «pls». – meagar

+0

Не в этом дело – kangear

ответ

2

При слиянии, вам не нужно говорить имя ветви, вы просто нужно совершить ссылку.

Предполагая B предпоследний коммит на ветке topic, вы могли бы сделать:

git checkout master 
git merge topic~ 

Где ~ означает «коммит перед тем». Вы можете узнать больше о том, как ссылка фиксируется с помощью man gitrevisions.

В качестве альтернативы вы можете напрямую предоставить SHA1 фиксации B.

+0

спасибо! мой английский очень беден. :) – kangear

+0

git merge topic ~ $ {n} может это сделать.但是 如何 根据 SHA1 来 指定 合并 到 指定 的 提交. – kangear

2

Я имею в виду «объединить B в мастер без C». - kangear 1 мин. Назад

Тогда просто сделайте именно это. Объединить B в master. Это полностью действует до слияния путем совершения ID, а не по имени филиала:

$ git checkout master 
$ git merge B 
Смежные вопросы