I'm using the following version of Git on macOS:
$ git --version
git version 2.36.1
When I commit and then try to push my changes, I get:
$ git push
To https://github.com/myproject/web.git
! [rejected] feature/test_feature -> feature/test_feature (non-fast-forward)
error: failed to push some refs to 'https://github.com/myproject/web.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help'
Then when I try to pull, I get these errors:
$ git pull
hint: You have divergent branches and need to specify how to reconcile them.
hint: You can do so by running one of the following commands sometime before
hint: your next pull:
hint:
hint: git config pull.rebase false # merge
hint: git config pull.rebase true # rebase
hint: git config pull.ff only # fast-forward only
hint:
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.
fatal: Need to specify how to reconcile divergent branches.
Attempting to do --ff-only
results in:
$ git pull --ff-only
fatal: Not possible to fast-forward, aborting.
I also tried running these prior to both pushing and pulling:
$ git config pull.rebase
$ git config pull.rebase true
$ git config pull.ff only
Not sure what other options I have.
CodePudding user response:
Don't say git pull
. Ever. It is highly configuration-dependent, so you never quite know what it will do — and sometimes, as you've discovered, what it will do is not what you want. Instead, say
git fetch
git merge
And now say
git push