Давайте наметим это.У вас есть три тематические ветви.Здесь все они разветвлены от одного и того же коммита, но это не имеет значения.
G - H [feature2]
/
A - B - C [release]
|\
| I - J [feature1]
\
E - F [feature3]
Вы можете видеть этот вид визуализации с помощью git log --graph --decorate --oneline
, за исключением того, что он будет идти сверху вниз.
Ситуация, которую я не знаю, как решить, - это когда мы сначала публикуем функцию 1, а затем функцию 2 в ветке релиза.
То естьвам так нравится.
G - H ---
/ \
A - B - C - K - L [release]
|\ /
| I - J
\
E - F [feature3]
В функции 3 есть конфликт слияния с функцией 1, поэтому из того, что я прочитал, нам нужно вручную объединить релиз с веткой функции 3, а затем выполнитьновый PR из функции 3 для выпуска ветки.
Это оставляет вас такими.
G - H ---
/ \
A - B - C - K - L [release]
|\ / \
| I - J \
\ \
E - F -------- M [feature3]
Если затем, после тестированиявыпуская ветвь, мы обнаруживаем, что функция 1 и функция 2 не будут развернуты, но мы хотим выпустить функцию 3. Теперь это невозможно, поскольку обе эти функции объединены в функцию 3.
"Ветвь" - это просто ярлык на коммитах.Вы можете перемещать их.Это включает перемещение их до того, как произошло слияние.Сначала восстановите feature1
и feature2
до их объединения.
git branch feature1 J
git branch feature2 H
[feature2]
G - H ---
/ \
A - B - C - K - L [release]
|\ / \
| I - J [feature1]
\ \
E - F -------- M [feature3]
Затем переместите feature3
назад до слияния.
git checkout feature3
git rest --hard F
[feature2]
G - H ---
/ \
A - B - C - K - L [release]
|\ /
| I - J [feature1]
\
E - F [feature3]
Затем переместите release
назаддо слияния feature1
и feature2
.
[feature2]
G - H
/
A - B - C [release]
|\
| I - J [feature1]
\
E - F [feature3]
Теперь вы вернулись до того, как произошло слияние.Теперь вы можете объединить feature3
в release
.