I get this a lot when trying to merge repositories with different histories -- which of course shouldn't happen often, but does happen to me when I'm trying to [[bootstrap]] a new repository.

Case in point: writing the README first when creating the repository in [[gitlab]] or [[github]] makes sense to me, as it's checking a checkbox and editing. And uploading a set of bootstrapping files then makes sense as a second step to me -- but that is ideally done right at the place files live, and once there it's easy to just say git init. But then if you want to merge the two you get into problems as [[git]] doesn't merge unrelated histories by default.

This [[stack overflow]] answer contains the flag you need: --allow-unrelated-histories. I guess [[git]] doesn't include it in the error message to prevent people from just tacking it on without knowing what they are doing (just to make the error go away) and having a mess as a result. It only makes sense if not surprising: that is, if you are trying to merge two unrelated repositories.

flancian@paramita:~/.local/share/chezmoi$ git pull origin main --allow-unrelated-histories
From gitlab.com:flancian/flancian
 * branch            main       -> FETCH_HEAD
hint: Pulling without specifying how to reconcile divergent branches is
hint: discouraged. You can squelch this message by running one of the following
hint: commands sometime before your next pull:
hint:   git config pull.rebase false  # merge (the default strategy)
hint:   git config pull.rebase true   # rebase
hint:   git config pull.ff only       # fast-forward only
hint: You can replace "git config" with "git config --global" to set a default
hint: preference for all repositories. You can also pass --rebase, --no-rebase,
hint: or --ff-only on the command line to override the configured default per
hint: invocation.
Merge made by the 'recursive' strategy.
 README.md                 | 35 +++++++++++++++++++++++++++++++++++
 social/mastodon/README.md |  1 +
 social/twitter/README.md  |  1 +
 social/twitter/apikey.asc | 21 +++++++++++++++++++++
 4 files changed, 58 insertions(+)
 create mode 100644 README.md
 create mode 100644 social/mastodon/README.md
 create mode 100644 social/twitter/README.md
 create mode 100644 social/twitter/apikey.asc

flancian@paramita:~/.local/share/chezmoi$ git push --set-upstream origin main
Enumerating objects: 21, done.
Counting objects: 100% (21/21), done.
Delta compression using up to 16 threads
Compressing objects: 100% (18/18), done.
Writing objects: 100% (20/20), 15.27 KiB | 7.64 MiB/s, done.
Total 20 (delta 2), reused 0 (delta 0), pack-reused 0
To gitlab.com:flancian/flancian.git
   a0c4798..230c24d  main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.
Receiving pushes... (requires JavaScript)
Loading context... (requires JavaScript)
πŸ“– Open document (Hedgedoc) at https://doc.anagora.org/refusing-to-merge-unrelated-histories
πŸ“– Open document (Etherpad) at https://stoa.anagora.org/p/refusing-to-merge-unrelated-histories
πŸ“Ή Video conferencing space (Jitsi Meet) at https://meet.jit.si/refusing-to-merge-unrelated-histories