Сквош фиксирует коммиты из объединенной ветви между ними - PullRequest
0 голосов
/ 30 сентября 2018

Есть такая ситуация на ветке BRANCH_SOMETHING:

FFF - 6th commit
EEE - 5th commit
DDD - 4th commit
Y commit from master
X commit from master
CCC - 3rd commit
BBB - 2nd commit
AAA - 1st commit

Как раздавить только мои коммиты?

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Есть две вещи, которые вы можете сделать.(Учитывая, что вы не хотите раздавить мастер коммитов в свои)

  • Два коммита

Один коммит будет сквош 1,2, 3 коммита, другой раздавит 4,5,6.

  • Применить немного магии веток

Вы можете

  1. Отменитьперебазировать или объединить (см. reflog ), что привело к текущей структуре вашей ветви (коммиты от мастера чередуются между вашими). ​​
  2. Сквош все ваши коммиты вместе.
  3. Doперебазирование или повторное слияние с мастером.

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

0 голосов
/ 01 октября 2018

Команда, которую вы должны выполнить: git rebase -i AAA~ (обратите внимание на ~). Он откроет ваш текстовый редактор по умолчанию со следующей программой rebase:

pick AAA 1st commit
pick BBB 2nd commit
pick CCC 3rd commit
pick X commit from master
pick Y commit from master
pick DDD 4th commit
pick EEE 5th commit
pick FFF 6th commit

Вы должны отредактировать текст, чтобы он выглядел какчто:

pick X commit from master
pick Y commit from master
pick AAA 1st commit
squash BBB 2nd commit
squash CCC 3rd commit
squash DDD 4th commit
squash EEE 5th commit
squash FFF 6th commit

Сохраните и выйдите из текстового редактора.

Запустится Git, а затем снова откройте текстовый редактор, что даст вам возможность редактировать сообщение о коммите:

# This is a combination of 6 commits.
# This is the 1st commit message:

1st commit 

# This is the commit message #2:

2nd commit

...

Отредактируйте сообщение о коммите, сохраните и выйдите.

Наконец, история будет выглядеть так:

GGG squashed commit
Y commit from master
X commit from master

Обратите внимание, что вы также можете поместить коммит X и Y после сдавленного коммита,просто отредактируйте программу rebase соответственно.

...