2016-07-19 1 views
5

У меня есть 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 
+1

Вы можете использовать 'git rebase -i HEAD ~ x' заменить' x' любым количеством коммитов, которое вы хотите посмотреть сверху вниз, например, 'git rebase -i HEAD ~ 3', это даст вам три последних коммита. Затем вы можете выбрать, какие фиксации вы хотите сохранить, и какие из них вы хотите удалить. –

+0

Commits 0eb277c и ebc279d отмечены как оба commit A, но, очевидно, их sha1 отличаются друг от друга, таким образом, это разные коммиты. На самом деле я не вижу дублированных коммитов в списке sha1. – Frodon

+0

Я имею в виду дубликат свободно, сообщения фиксации одинаковы, а применяемый код одинаковый. Но он дублируется и сохраняется как новый фиксатор. – Kiee

ответ

4

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

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

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

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

Смежные вопросы