Git rebase behavior is not fixed. It can change based on user config, environment settings, and team workflows. This is the part most developers miss: Git rebase is user config dependent. Knowing which settings influence it can mean the difference between a clean history and a tangled mess.
The most common config keys tied to rebase outcomes include:
pull.rebase— Controls whethergit pulluses rebase instead of merge.rebase.autostash— Saves and reapplies local changes during rebase.rebase.merges— Preserves merge commits in the rebase process.branch.<name>.rebase— Enables rebase for a specific branch.
When these values differ across users, rebasing the same codebase can produce different commit graphs. For distributed teams, this means rebase operations are not deterministic unless configs are aligned.