Git - перебазировать на один коммит без разрешения конфликтов - PullRequest
0 голосов
/ 21 февраля 2019

Предположим, я работал над веткой my-branch, иногда объединяя коммиты из master, чтобы оставаться в курсе.При некоторых слияниях мне приходилось разрешать конфликты, что занимало много времени.

Теперь я закончил с my-branch и хочу перебазировать его в один коммит поверх master.Во время ребазинга мне придется разрешать те же конфликты, что будет утомительно.

Но у меня уже есть точное состояние, в котором мне нужны файлы, я просто хочу очистить историю.Таким образом, самый быстрый способ выполнить перебазирование:

  1. Перемотать назад на мастер
  2. Сделать файлы такими же, как в my-branch, но отбросить историю коммитов.На этом этапе у меня будет много незафиксированных изменений.
  3. Сделать один коммит

Возможно ли это?

РЕДАКТИРОВАТЬ: SO говорит мне, чтобы объяснить, почемумой вопрос не является дубликатом этого .Хотя самый решительный ответ там решит мою проблему, вопрос в том, как «раздавить коммиты»?и мое «я знаю, как раздавить коммиты, как это сделать, не имея дело с конфликтами?».Так что ответ тот же, но я не нашел его, когда искал решение, прежде чем публиковать здесь.Возможно, если кто-то еще знает о rebase, но не знает о мягких перезагрузках, они найдут решение здесь.

1 Ответ

0 голосов
/ 21 февраля 2019

Конечно .... это довольно просто, используя git reset --soft.

git checkout my-branch
git merge master -m "Merging last changes from master"
# we start the magic here
git reset --soft master # set the branch pointer on master
git commit -m "Here's the work for X feature in a single shot"
...