Сквош фиксирует для проблемы в один - PullRequest
0 голосов
/ 23 октября 2018

Какой самый простой способ объединить несколько коммитов по проблеме в один, если между первым выпуском также есть коммиты по другой проблеме?

Я пытался использовать rebase:

git checkout ISSUE-006
git rebase -i HEAD~13

Что дает мне:

pick 5796b58 ISSUE-006: Fix case 1
pick 4d836b2 ISSUE-006: Fix case 2
pick cae225b ISSUE-006: Bump version
pick 0006f82 ISSUE-006: Fix case 3
pick 98263c2 ISSUE-006: Bump version
pick 8bcc4d4 ISSUE-018 Blahblahblah
pick 6b18711 ISSUE-018 minor changes
pick 0924c16 ISSUE-018 Blahblahblah
pick 0e720f9 ISSUE-006: Bump version
pick bc66908 ISSUE-006: Remove comments
pick 49930b9 ISSUE-006: Proper encoding
pick 8f1196e ISSUE-006: Add tests
pick 2bcbfef ISSUE-006: Bump version

Я бы хотел, чтобы каждый коммит, принадлежащий ISSUE-006, был раздавлен в один коммит.Если я правильно понимаю, я могу просто использовать редактор по умолчанию и изменить pick на squash?

Я также попытался использовать merge с --squash без какого-либо успеха:

git checkout ISSUE-006
git branch -m ISSUE-TMP
git checkout master
git branch -b ISSUE-006
git merge --squash ISSUE-TMP
git branch -d ISSUE-TMP

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

1 Ответ

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

Если я правильно понимаю, я могу просто использовать редактор по умолчанию и изменить pick на squash?

Не совсем, так как есть коммиты для ISSUE-018 междусовершает за ISSUE-006.Коммиты сводятся к предыдущему коммиту, поэтому вам также нужно будет переупорядочить коммиты в вашем редакторе, чтобы переместить все коммиты на ISSUE-018 в конец или, возможно, в начало.

Кроме того,первый коммит для ISSUE-006 должен быть pick ed, а не squash ed.

Например:

pick 5796b58 ISSUE-006: Fix case 1
squash 4d836b2 ISSUE-006: Fix case 2
squash cae225b ISSUE-006: Bump version
squash 0006f82 ISSUE-006: Fix case 3
squash 98263c2 ISSUE-006: Bump version
squash 0e720f9 ISSUE-006: Bump version
squash bc66908 ISSUE-006: Remove comments
squash 49930b9 ISSUE-006: Proper encoding
squash 8f1196e ISSUE-006: Add tests
squash 2bcbfef ISSUE-006: Bump version
pick 8bcc4d4 ISSUE-018 Blahblahblah
pick 6b18711 ISSUE-018 minor changes
pick 0924c16 ISSUE-018 Blahblahblah

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

Конечно, слияние или изменение этих ветвей также может привести к конфликтам.Но вы не должны получать ничего, если вы просто подавляете коммиты ветви без переупорядочения.git merge также включает флаг --squash для упрощения этого рабочего процесса во время слияния.

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

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

Чистота субъективна, и во многих случаях несколько гранулярных коммитов могут быть более ясными и более простыми для анализа, чем один большой коммит.Лучшее руководство - следовать рекомендациям проекта, в который вы вносите свой вклад, поэтому ваши вклады соответствуют остальной части проекта.


Редактировать: В комментарии выупомянул, что коммиты 8bcc4d4, 6b18711 и 0924c16 (те, что для ISSUE-018) уже существуют в целевой ветви.В этом случае вы, вероятно, захотите удалить их из этой ветви, например, выполнив что-то подобное в интерактивном ребазе:

pick 5796b58 ISSUE-006: Fix case 1
squash 4d836b2 ISSUE-006: Fix case 2
squash cae225b ISSUE-006: Bump version
squash 0006f82 ISSUE-006: Fix case 3
squash 98263c2 ISSUE-006: Bump version
squash 0e720f9 ISSUE-006: Bump version
squash bc66908 ISSUE-006: Remove comments
squash 49930b9 ISSUE-006: Proper encoding
squash 8f1196e ISSUE-006: Add tests
squash 2bcbfef ISSUE-006: Bump version
...