2016-12-02 2 views
-1

У меня возникла проблема слияния двух ветвей в другую.Слияние двух ветвей в другую без новой фиксации

У меня есть две ветви функций с 1 фиксацией впереди мастера в каждом.

feature-branch-1 - 1 commit 'alpha' ahead of master 
feature-branch-2 - 1 commit 'beta' ahead of master 

И у меня есть ветвь мастера с 1 фиксацией.

master - 1 commit 'gamma' 

Я хочу запустить что-то вроде этого.

git checkout master 
git merge feature-branch-1 --no-commit 
git merge feature-branch-2 --no-commit 

И в конечном итоге главная ветвь с тремя коммитами.

master - 3 commit 'gamma', 'alpha', 'beta' 

Настоящий судебный процесс является первым слиянием. Тогда второе слияние имеет это сообщение.

Автоматическое слияние хорошо; прекращено до совершения по требованию

Как я могу успешно объединить эти ветки вместе?

+2

Это не имеет никакого смысла. В вашем названии говорится «без совершения», но вы, в частности, говорите, что вы хотите, чтобы он продолжал существовать. Делаете ли вы или не хотите, чтобы вы совершали отдельные поручения? Если вы хотите, чтобы три коммиты существовали на 'master' после слияния двух ветвей, каждая из которых имеет * одну фиксацию *, вам просто нужно нормальное слияние. Просто выполните git merge feature-branch-1; git merge feature-branch-2'. Это * регулярное слияние * без дополнительных опций, чтобы ускорить 'master' над двумя ветвями.Опция '--no-commit', очевидно, делает * not * делает фиксацию, поэтому, если вы хотите коммитировать, не используйте ее. – meagar

+0

@meagar это не работает по желанию, первое слияние работает, второе заставляет меня вручную совершать новый коммит, что нежелательно. – ThomasReggi

+0

Это не так, как ведет себя 'git merge', если только ваша вторая фиксация не может быть слита чистой, и в этом случае вы задали неправильный вопрос. Ответ: ** - 'git merge branch-1', за которым следует' git merge branch-2', оба из которых ведут себя одинаково, и оба из них создают коммиты. – meagar

ответ

0

Попробуйте это:

$ git checkout master 
$ git merge feature-branch-1 --no-commit --no-ff 
$ git merge feature-branch-2 --no-commit --no-ff 
+0

Это ничего не совершает. Он оставляет все файлы из слияния в голове. – ThomasReggi

+0

ОК. Если вы просто используете git merge feature-branch-1', 'git merge feature-branch-2'. Это работает? –

+0

Нет, в этом случае первое слияние пересылается, а второе слияние остается незафиксированным. – ThomasReggi

0

Любой успешный автоматический слияние сделано с --no-commit принтами:

Автоматическое слияние прошло хорошо; прекратили до совершения в соответствии с просьбой

поэтому вы увидите это как для команд git merge.

Тем не менее, хотя, Git имеет «осьминог» стратегия слияния для создания слияния, которая связывает несколько ветвей вместе все сразу:

git checkout master 
git merge feature-branch-1 feature-branch-2 

, которая в идеальном случае делает что-то вроде этого, совершает-граф -wise. Если мы начнем с:

  o--o--o---o <-- feature-branch-1 
     /
...--o--o-----o----o <-- master 
     \ 
      o--o--o---o <-- feature-branch-2 

затем (при совершении осьминога слияния), мы в конечном итоге с:

  o--o--o---o  <-- feature-branch-1 
     /   \ 
...--o--o-----o----o--o <-- master 
     \   /
      o--o--o---o  <-- feature-branch-2 

Существует, однако, не реальное преимущество при всем делать два отдельных слияния:

  o--o--o---o   <-- feature-branch-1 
     /   \ 
...--o--o-----o----o--o--o <-- master 
     \   /
      o--o--o------o  <-- feature-branch-2 

График «гамбургер» или «летающая тарелка» из слияния осьминога не дает вам никаких способностей, которые вам не хватает при использовании графика «лодки» из метода двух отдельных разделов.

 Смежные вопросы

  • Нет связанных вопросов^_^