Я думаю, что вы запрашиваете способ сделать один коммит, который выглядит как , как будто вы выполнили всю работу в своей личной ветке за один раз.Обратите внимание, что это не «коммит слияния» в терминологии git;это просто нормальный коммит.
Редактировать: здесь нужно отметить одну вещь: это означает, что git не хранит никаких сведений о слиянии, поэтому он начинает становиться неловким, если вы хотите продолжать использовать свою личную веткуоткуда ты это слил.Это идеально подходит для экспериментальных веток, которые не используются снова после сдавленного «слияния».
Вы можете сделать именно то, что вам нужно, используя git merge --squash
(а затем зафиксировать результат, используя git commit
).Это даст вам желаемый результат:
A - B - F - G - K - M
Что я обычно делаю, это сначала манипулирую моей личной веткой (используя git rebase -i master
), чтобы настроить коммиты так, чтобы они выглядели именно так, как я хочу, а затем использоватьgit merge
чтобы привести их к хозяину.Таким образом, я также могу сделать:
A - B - F - G - K - M1 - M2 - M3
, где M1
, M2
и M3
- это переделка всей работы в личной ветке, но в некотором смысле, что также имеет смысл източка зрения мастер ветки.Это полезно, поскольку сохранение отдельных коммитов и их логическое разделение удобно при использовании истории изменений в будущем.