Как вы можете переустановить текущие изменения ветки в дополнение к слияниям?

Хорошо. Если я на ветке (скажем working), и я хочу объединить изменения с другой веткой (например, master), тогда я запускаю команду git-merge master, находясь в ветке working, и изменения объединяются без переустановки истории вообще. Если я запустил git-rebase master, изменения в master будут переупорядочены для размещения в верхней части ветки working. Но что, если я хочу объединиться в изменениях из master, но переустановить мои изменения в working, чтобы быть наверху? Как мне это сделать? Это можно сделать?

Я могу запустить git-rebase working в моей ветке master, чтобы поместить мои изменения сверху в ветвь master, но я хотел бы иметь возможность сделать это в моей ветке working, и у меня нет идея как. Самое близкое, что я могу придумать, это создать новую ветку из master, а затем переформатировать working изменения поверх нее, но тогда у меня будет новая ветка вместо изменения ветки working.

Ответ 1

У вас есть, что rebase делает назад. git rebase master делает то, о чем вы просите, - принимает изменения в текущей ветке (начиная с ее расхождения с мастером) и повторяет их поверх master, а затем устанавливает главу текущей ветки в качестве главы этого нового история. Он не воспроизводит изменения с master поверх текущей ветки.

Ответ 2

Другой способ взглянуть на это - рассмотреть git rebase master как:

Восстановите текущую ветвь поверх master

Здесь 'master' является ветвью вверх по течению, и это объясняет, почему во время переустановки ours и theirs меняются на противоположные.

Ответ 3

Я только что сделал это несколько минут назад следующим образом:

  1. git checkout -b work-in-progress резервную копию текущей работы git checkout -b work-in-progress
  2. получить последние изменения git fetch origin master
  3. отменить все локальные изменения git reset --hard origin/master
  4. воспроизвести последние изменения из master git rebase origin/master
  5. воспроизвести вашу работу в процессе git rebase origin/work-in-progress
  6. синхронизировать вашу работу с последним master git rebase origin/master