Git - применение коммитов из одной ветки в другую с помощью rebase - PullRequest
0 голосов
/ 18 декабря 2018

Для одного из наших проектов мы должны использовать внешнюю базу кодов компаний.Время от времени они обновляют своего мастера, который мы затем должны интегрировать в репо.Тем не менее, поскольку они делают странные / ненужные вещи, у нас есть пара коммитов, которые мы должны применять каждый раз, когда они обновляют своего мастера, прежде чем мы объединяем его с нашим.Эти коммиты являются частью ветки релиза (назовем это release/old. Чтобы получить последние изменения и применить эти коммиты, мне нужно создать новую ветку из их мастера (например, release/new) и затем перебазироватькоммиты из release / old в release / new.

Сначала я попробовал git rebase release/old из новой ветки, но это, очевидно, не сработало, так как он взял коммиты из release/new и применил их к release/oldКогда я попробовал git rebase -i release/new из release/old branch (поэтому возьмите коммиты из старого и примените их к новому), он прошел через все коммиты, но когда я вернулся в новую ветку и попытался протолкнуть его, он сказалничего нельзя нажать, и в git log отображаются только коммиты, поступающие от мастера.

Все, что я знаю, это то, что это было сделано с использованием git rebase раньше, но я не могу понять, какая команда правильнаяесть.

1 Ответ

0 голосов
/ 18 декабря 2018

Предполагая, что это ваша ситуация:

a -- b -- c                 <-- their/master
     \ 
      \
       f -- g               <-- release/old
  1. git checkout release/old
  2. создать копию этой ветви с помощью git checkout -b release/new
  3. обновить release/new переход на последнюю their/master через git rebase their/master, что приводит к:
a -- b -- c                 <-- their/master
      \    \ 
       \    \
        \    f' -- g'        <-- release/new
         \
          f -- g             <-- release/old

Ваш release/new теперь имеет their/master в качестве базы, более того, он имеет копии "пары коммитов""которые были включены в release/old поверх этой базы.

...