Я не уверен, что понимаю ваш вопрос. Из вашей диаграммы давайте попробуем построить несколько новых диаграмм. Видимо, у вас есть в удаленном общем репо:
[master] * --- [possibly more commits]
\
[release1] * --- A --- B --- C
\
[base] D --- E
А в вашем личном репо:
[master] * --- [possibly more commits]
\
[release1] * --- A --- B --- C
\
[base] D --- E
\
[devel] F --- G --- I --- J
\ /
--- H --------
так что кончик ветви "devel" - это коммит J, который является слиянием FGI + H, все указывает назад на D (в "базе"), которая указывает на "A" (в релизе 1). Теперь кто-то планирует выпустить "release2", который они сделают, объединив ABC + DE?
Если вы хотите, чтобы ваша ветвь "devel" основывалась на этом слиянии, вам просто нужно переназначить результат этого слияния (которого еще нет, поэтому вам придется подождать).
Или, возможно, вы имеете в виду, что приведенное выше удаленное репо более или менее точно, но у вас нет вашей собственной ветви "devel". Возможно, ваше (локальное) дерево коммитов репо выглядит примерно так:
[master] * --- [possibly more commits]
\
[release1] * --- A --- B --- C
\
[base] D --- E --- F --- G --- I --- J
\ /
--- H ---------
Если вы хотите, чтобы это выглядело так:
[master] * --- [possibly more commits]
\
[release1] * --- A --- B --- C
\
[base] D --- E
\
[devel] F --- G --- I --- J
\ /
--- H ---------
тогда вы можете начать с создания ветки "devel", которая зависает от коммита E:
git branch devel E # use the commit-ID for commit E
и затем повторно указать локальную ветку "base" для фиксации E:
git branch -d base; git branch base E # again you'll want the sha1
# or: git update-ref refs/heads/base E
и все готово (на данный момент, во всяком случае, в конечном итоге вам все равно придется перебазировать вашу ветку "devel").
ПРИМЕЧАНИЕ (которое, я думаю, может очень помочь в понимании ветвей): я поместил метки ветвей слева от каждого уровня дерева на своих диаграммах, но на самом деле метки ветвей располагаются "справа" «(как бы на« верхушке »каждой ветви). Когда вы делаете «git commit» на ветке, это добавляет новый коммит, а затем обновляет tip-tip. Я подозреваю, что большинство людей «думают» о ветвях, как будто метки устанавливаются один раз, когда вы выполняете команду «git branch», а затем остаетесь там навсегда - но это не так, как они работают. Метка ветви следует за кончиком ветви. «Горизонтальная часть» ветви, когда вы смотрите на дерево коммитов, если оно нарисовано так, как я их здесь нарисовал, - это то, что вы должны разработать на основе структуры дерева коммитов.