2015-05-26 4 views
1

У меня длинная вилка git, и я хотел объединить ветвь вверх по течению. К сожалению, я сделал git merge upstream-topic и потратил часы на разрешение конфликтов слияния, прежде чем осознать, что я действительно хотел сделать git merge upstream-master.Git: повторить слияние с другой веткой

Ветви имеют на 99% одинаковое содержание, кроме upstream-topic есть куча слияния, заключающаяся в слиянии upstream-master, что я бы предпочел не навсегда загромождать историю. Есть ли способ «переделать» слияние с upstream-master, не теряя при этом моего разрешения?

Я только что обнаружил git rerere и действительно жаль, что я имел это позволило :(

+0

Как 'вверх-topic' и' вверх-master' связан ли одна ветви впереди другой –

+0

ли 'вверх-тема? 'и' upstream-mast er' действительно идентичны, за исключением того, что эти дополнительные слияния совершаются? Например, когда вы используете 'git diff upstream-topic upstream-master', вы не получаете никакой разницы? – poke

+0

'upstream-master' немного впереди, а' upstream-topic' имеет пару других мелких коммитов, которые мне действительно не нужны (не должны вызывать конфликтов) – chkn

ответ

2

Если две ветви upstream-topic и upstream-master действительно содержат одинаковое содержание и отличаются только тем, дополнительное слияние совершает, то вы можете просто повторное содержание вашего объединенного upstream-topic решить конфликты слияния в upstream-master:

# save the current master which merged upstream-topic 
git branch merged-topic 

# reset master to its original commit 
git reset --hard origin/master 

# do the merge, getting lots of conflicts 
git merge upstream-master 

# instead of solving those conflicts again, just use all the contents 
# of your already merged topic 
git checkout merged-topic -- . 

# check the status, resolve the conflicts, and commit 
git status 
git add -u . 
git commit 
+0

Это почти работает, но есть и другие изменения в восходящем потоке - тема. Возможно, только проверка противоречивых файлов сделала бы трюк – chkn

+0

Да, вы можете, конечно, настроить то, что хотите проверить. Вы также можете попробовать создать патч, используя 'git diff upstream-topic upstream-master', который дает вам изменения, необходимые для перехода с темы на мастер; поэтому вы можете попробовать применить этот патч после проверки объединенной темы для создания объединенного мастера. (Я надеюсь, что это имеет смысл) – poke

+0

Как только я удалил посторонние коммиты, это сработало как шарм! Благодаря! – chkn

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