At my workstation, the โcentralโ repository is an SVN server. I am using git through git-svn.
SVN (obviously) does not perform fast merges. Therefore, in order to be able to replicate my local history to the server, I do all the merges that become externally visible explicit.
The reason why you would prefer this template in the general case (clarification: "why do you want an explicit merge union for the main combination of two branches, for example, reuniting a multi-year branch of a side function, even if the two do not conflict?") that it makes the repository better reflect the real series of operations performed, i.e. abstraction for a story better reflects the reality of that story.
When you move forward, information about when the integration occurs is lost - in history there is no sense in saying โhere, when X became Yโ with the corresponding message.
This is the same reason some people use merges, preferring to repack even for their local branches - reloading is a form of rewriting a story, a white lie on paper.
To your other question - โwhy should there be only small changes in the command commitโ, the answer is that the merger can have a large spread in relation to all parents. So, if you added significant work there, it is very difficult to figure out if the problem was an integration problem or one of the new changes that you added. If you place the commit either on one of the parents or after the merger, the halving is simplified, the cherry change can be transferred, you can cancel the merger without losing functions, etc.
Borealid
source share