Удалить дублирующие коммиты, введенные после плохой перебазировки

git version-control rebase

5946 просмотра

1 ответ

7153 Репутация автора

У меня есть 2 филиала, master& feature. Мастер время от времени получает небольшие изменения, необходимые для быстрого запуска. После того, как эти настройки сделаны, они masterперезагружены, featureтак что функция обновляется.

Файлы, измененные на master, обычно не связаны с основной частью разработки, featureно я получаю большое количество сложных трехсторонних конфликтов слияния.

Посмотрев журнал коммитов feature, я обнаружил, что проблема состоит в нескольких дубликатах, и я пытаюсь решить ее с помощью интерактивной перебазировки.

Мой вопрос:

Является ли это лучшим решением проблемы, и если да, могу ли я просто отбросить дубликаты и по сути построить историю, как я ожидаю, что она будет выглядеть? Также, какие дубликаты я бы отбросил, выше (более старый оригинал) или ниже (более новые дубликаты).

Абстрактный список взят из git rebase master -i:

pick 0eb277c Commit A
pick ced2556 Commit B
pick 640e049 Commit C
pick b248ff7 Commit D
pick 9903094 Commit E
pick ebc279d Commit A
pick 313385b Commit F
pick 0d55178 Commit G
pick c8f09f9 Commit H
pick e877be3 Commit I
pick 9859aa0 Commit J
pick c3c8e0f Commit K
pick 8abc68c Commit L
pick 84a5c89 Commit A
pick 30570e4 Commit B
pick 937ff2f Commit C
pick 8e6d911 Commit D
pick 1dd3a09 Commit E
pick fe79288 Commit F
pick 9e790bb Commit G
pick 0924916 Commit H
pick 90d59d7 Commit I
pick ba06c55 Commit J
pick 7452fad Commit K  ** Dupes end here** and features then has 30+ more commits.
pick d1dca3d Commit M
pick 6c85f76 Commit N
pick ad53b78 Commit O
pick f166471 Commit P
Автор: Kiee Источник Размещён: 19.07.2016 09:28

Ответы (1)


10 плюса

7153 Репутация автора

Решение

Чтобы удалить дублирующиеся коммиты, вы должны просмотреть список, созданный git rebase master -iи удалить дубликаты, перемещаясь вверх и вниз по списку с помощью клавиш со стрелками, нажимая dна коммиты, которые вы хотите drop.

( masterможет быть заменен хешем коммита или любой действительной точкой повторной базы)

После того, как вы удалили все дубликаты и получили список коммитов, который выглядит так, как вы ожидаете, история будет выглядеть, выйдите из экрана перебазирования, нажимая escи печатая, !wqи нажимая enter.

Затем повторная база будет продолжена и будет применен список коммитов, которые вы pickредактировали, к вашей базовой точке.

Автор: Kiee Размещён: 19.07.2016 11:54
32x32