Как вы перебазировать изменения текущей ветви на вершине изменений в?

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

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

3 ответов


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


еще один способ взглянуть на это рассмотреть git rebase master as:

перебазировать текущую ветку на master

здесьmaster - это вверх ветка, и это объясняет, почему во время ребаза,ours и theirs сторнируются.


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

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