Как добиться сдавленного коммита слияния - PullRequest
1 голос
/ 29 апреля 2020

Допустим, у меня в данный момент проверена основная ветвь

Если я произвожу нормальное слияние с (--no-ff), например

git merge release/version --no-ff

, то применяются все оставшиеся коммиты в мою основную ветку с дополнительным коммитом слияния. С коммитом слияния вы можете визуально увидеть ветку релиза, входящую в master. Однако, допустим, я хочу, чтобы мастер содержал только сокращенную версию истории проектов, и поэтому я вычисляю sh все оставшиеся коммиты, например, так:

git merge release/version --squash

Затем я фиксирую сжатый коммит с

git commit -m "Merge branch 'release/version'"

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

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

1 Ответ

1 голос
/ 30 апреля 2020

Любые указатели о том, как слиться с мастером, но с простым коммитом. (У меня есть ветка разработки с полной историей)

Вы можете создать новую ветку, начиная с того места, где начинается ветка release/version, но раздавливая каждую release/version фиксацию в одну.

Затем merge --no-ff эта (одна фиксация) ветвь.

git branch newBranch release/version
git rebase -i $(git merge-base HEAD newBranch)
# mark all commits except the first as "`squash`"
git merge --no-ff master
...