Какова цель отдельной фиксации слияния в git?

Когда вы объединяете две ветки вместе, git создает отдельный коммит с сообщением вроде Слить ветку 'master' в мою -отрасль .Для нетривиального слияния мне ясно, что это полезно: оно хранит историю того, как были слиты, отдельно от любых других изменений. Но когда слияние тривиально (например, когда две ветки не влияют на какие-либо общие файлы), какова цель отдельной фиксации слияния?

Вы можете избежать этой фиксации с помощью git merge --no-commit . Затем вы можете добавить «реальное» изменение и в этот коммит. Таким образом вы избежите кажущейся бесполезной дополнительной фиксации. Но страница руководства предупреждает об этом:

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

Почему это так?

С коммитами с реальными изменениями, отмеченными как o , и коммитами только слияния как X , это разница между этими двумя ситуациями:

o---o-o-o---o--- master
 \   \   \   \
  o-o-X-o-X-o-X-o--- my-feature


o---o-o-o---o--- master
 \   \   \   \
  o-o-o---o---o--- my-feature

Почему первая предпочтительнее второй?

PS: Предположим, что my-feature - это общедоступная ветка, которую также используют другие люди, поэтому rebase не будет вариант.

10
задан Wouter Coekaerts 15 February 2012 в 21:41
поделиться