Другой возможный вариант действий, несколько более простой и менее подверженный ошибкам, чем интерактивная перебазировка в некоторых контекстах, состоит в том, чтобы просто отменить коммиты и повторно зафиксировать только один раз для всего лота . Я тоже нахожу это быстрее.
Давайте предположим, что это дерево примера с 2 ветвями, master
и complex-feature
A-<-B-<-C <<< master
\
D-<-E-<-F-<-G-<-H-<-I-<-J-<-K <<< complex-feature
Прежде чем просто объединить этот длинный список коммитов (D,E,F,G,H,I,J,K
), вы можете сделать следующее:
git checkout complex-feature
git reset --soft B
git commit -m "Global message for commits D through K"
И потом дерево будет выглядеть так:
A-<-B-<-C <<< master
\
L <<< complex-feature
... где commit L
содержит сумму всех изменений от D
до K
.
Однако, как отмечают другие, множественные небольшие коммиты не являются проблемой, и объединение слишком большого количества вещей может также иметь неприятные побочные эффекты. Обязательно обсудите это со своими коллегами и адаптируйтесь к своему рабочему процессу.