2017-02-10 10 views
2

Представьте себе репозиторий со следующими фиксациями:давя совершает после того, как они выталкиваются

Fixed issue 3    123eabc 
Fixed issue 2 (part 2)  fa23b79 
Fixed issue 2 (part 1)  7bea5cc 
Fixed issue 1    0d229f4 

Это все толкнуло удаленный мастер уже. Есть ли способ переписать историю и объединить средние два в одну фиксацию? Что-то наподобие

Fixed issue 3    123eabc 
Fixed issue 2    9d23e0c 
Fixed issue 1    0d229f4 
+2

Вы * можете *, но вопрос * обязательно * вы? Любой, кто вытащил мастера, должен быть уведомлен об отмене переписанной истории. – chepner

ответ

3

Один из вариантов заключается в том, чтобы сделать интерактивную переустановку, в которой вы выкапываете два вопроса 2 вместе.

git rebase -i HEAD~4 

Это говорит Git, что вы хотите сделать интерактивный перебазироваться с участием четырех фиксаций в том числе и отсчитывается от головы вашей отрасли. Это должно показать вам список ищет что-то вроде следующего:

pick 0d229f4 Fixed issue 1 
pick 7bea5cc Fixed issue 2 (part 1) 
pick fa23b79 Fixed issue 2 (part 2) 
pick 123eabc Fixed issue 3 

Обратите внимание на старейшей совершить появляется первый, и самый последний из четырех фиксаций появляется последний.

Изменение pick для средней фиксации часть 2 вы хотите совместить с частью 1 до squash:

pick 0d229f4 Fixed issue 1 
pick 7bea5cc Fixed issue 2 (part 1) 
squash fa23b79 Fixed issue 2 (part 2) 
pick 123eabc Fixed issue 3 

давя средства, сочетающие коммит метили squash в фиксации выше это, в данном случае слияния часть 2 в часть 1.

Затем сохраните этот файл и выйдите из редактора и заполните rebase.

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

+0

Отличный ответ. У меня есть следующий вопрос по адресу http://stackoverflow.com/questions/42820476/what-happens-to-the-squashed-changes-in-git – Merik

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

  • Нет связанных вопросов^_^