Ralf Thielow <ralf.thielow@xxxxxxxxx> writes: > There are several ways to configure Git to preserve merges. > There is "pull.rebase=preserve" for all branches and > "branch.<name>.rebase=preserve" for individual branches. > However, there is no configuration option to preserve merges > for all branches when running git-rebase. How should this interact with pull.rebase? Specifically, what should happen with these settings? [rebase] preserve = true [pull] rebase = true Historically, the variable was a way to tell 'pull' to use 'rebase' to integrate (if true) or use 'merge' to integrate (if false), and then the third value that is clearly not 'false' was added to say "How should the underlying 'rebase' integrate the local and the remote histories?". In that light, one can argue 'git pull' with the above two should run 'rebase --preserve'. In other words, rebase.preserve tells us "When 'rebase' is told to run, it should do the 'preserving' variant." But then when somebody sets pull.rebase to true, expecting that 'true' does not just mean "Yup, please use rebase, I do not like merges", but means "Use rebase without preserve", it would be hard to debug if the behaviour of 'git pull' is affected by a separate variable rebase.preserve that may be defined in a far-away place in the configuration file. I dunno. This kind of complications is one reason why I wouldn't encourage adding these configurations to affect the behaviours of commands. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html