git · Git
The message
Your branch and 'origin/main' have diverged
What it means
Your branch and origin/main each hold commits the other does not, so the line of history has split in two. It happens when you committed locally while someone else pushed, or when you rewrote already-pushed commits with amend or rebase. git pull --rebase replays your commits on top of theirs and keeps history in one line, but it gives your commits new hashes, so if you had already shared them the same work ends up recorded twice; in that case --no-rebase, which leaves a single merge commit, is the safer choice.
The fix
git pull --rebase origin main- Printed by
- git
- Git
- 29
Almost every git error is a refusal that means "doing that from this state would lose something"; fatal: means git stopped without changing anything, and the hint: lines under the first line usually carry the actual remedy.
Reading an error message
- Read from the first line down. The lower you go the more it is about the tool’s internals; the cause is usually at the top.
- If there is a file and a line number, start there — not the top stack frame, but the topmost line that names a file you wrote.
- Search the message verbatim, but strip your own paths and variable names first; those are what stop the search from matching.
- The same condition is worded differently across tool versions. If results look wrong, add the version number to the query.
- Before pasting a fix, check what it throws away. Some of these cannot be undone.
Common questions
Q. What does “Your branch and 'origin/main' have diverged” mean?
Your branch and origin/main each hold commits the other does not, so the line of history has split in two. It happens when you committed locally while someone else pushed, or when you rewrote already-pushed commits with amend or rebase. git pull --rebase replays your commits on top of theirs and keeps history in one line, but it gives your commits new hashes, so if you had already shared them the same work ends up recorded twice; in that case --no-rebase, which leaves a single merge commit, is the safer choice.
Q. How do I fix it?
git pull --rebase origin main — before running it, check the explanation above for what this command discards.
Q. Which tool prints this?
git. It sits under Git, and the message runs to 6 words.