GIT: объединить две ветки в новую без зависимостей в Gerrit

У меня есть две ветки в моем локальном репозитории: branch_1 и branch_2, каждая основана на одном и том же коммите A и содержит несколько коммитов (заголовки < strong>A1 и A2 соответственно).

Я переместил ветку A1 и A2 в основную ветку Gerrit и получил два отдельных обзора. Потом я их бросил.

Теперь мне нужно создать новую локальную ветвь branch_3 на основе A и содержащую изменения из A1 и A2 в A3. Я сделал:

git checkout -b branch_3 origin/master

git merge branch_1 branch_2

У меня есть коммит A3, который мне нужен, и я передал его Герриту. Был создан третий обзор, но он зависел от двух предыдущих заброшенных коммитов, поэтому я не могу его отправить.

Есть ли способ объединить две ветки в одну фиксацию A3, чтобы она зависела только от A, но не от A1 и A2?


person Alexander Bagiev    schedule 09.04.2013    source источник


Ответы (2)


подход 1: попробуйте перебазировать ветку, содержащую A3 на origin/master

подход 2: проверить чистую ветку, выбрать вишневый коммит A3 и снова нажать:

git checkout -b feature --track origin/master

git cherry-pick A3

git push origin HEAD:refs/for/master

person yuwang    schedule 09.04.2013
comment
Сбор вишни завершился неудачно со следующей ошибкой: error: Commit 3a6bba4e6f216bb43f4d01da0f7175bd67ac8fa3 is a merge but no -m option was given. fatal: cherry-pick failed - person Alexander Bagiev; 11.04.2013

Опция '-n' должна использоваться для выбора вишни для каждого необходимого коммита:

git checkout A
git cherry-pick -n A1
git cherry-pick -n A2
git commit

Вновь созданный коммит A3 является ожидаемым.

person Alexander Bagiev    schedule 30.07.2013