Как вы переоцениваете изменения текущей ветки поверх сливаемых изменений? - PullRequest
127 голосов
/ 04 сентября 2011

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

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

Ответы [ 2 ]

227 голосов
/ 04 сентября 2011

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

58 голосов
/ 22 ноября 2012

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

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

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

...