Git: Объединение нескольких коммитов в один коммит - PullRequest
1 голос
/ 11 марта 2019

Я работаю над git-репозиторием, в котором у меня нет записей слияния.Существуют большие требования, для выполнения которых требуется как минимум 1-3 недели.Я вынимаю ветку у мастера и делаю в ней свои изменения.В течение этого времени я генерирую несколько коммитов в конце дня и проверяю, что мой код передается в удаленную ветвь.

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

https://blog.carbonfive.com/2017/08/28/always-squash-and-rebase-your-git-commits/

Это не очень хороший вариант, так как процесс долгий и есть вероятность ошибки.

У меня вопрос, есть ли другой вариант, которым я могу следовать?

Ответы [ 4 ]

1 голос
/ 11 марта 2019

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

Давайте предположим, что это дерево примера с 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.

Однако, как отмечают другие, множественные небольшие коммиты не являются проблемой, и объединение слишком большого количества вещей может также иметь неприятные побочные эффекты. Обязательно обсудите это со своими коллегами и адаптируйтесь к своему рабочему процессу.

1 голос
/ 11 марта 2019

Вы можете мягко сбросить вашу ветку на конкретный коммит до ваших правок, таким образом, вы можете зафиксировать все свои правки за один коммит.

1 голос
/ 11 марта 2019

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

Вы можете либо сжать все коммиты до одного, либо объединить каждый коммит с основной веткой.

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

0 голосов
/ 11 марта 2019

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

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

Я нахожу это почти обязательным для локальных ветвей перед отправкой в ​​общий репозиторий.

Только убедитесь, что делаете это только на ветке, которая не является общей.

...