-3

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.

jonrsharpe
  • 115,751
  • 26
  • 228
  • 437
Dave
  • 15,639
  • 133
  • 442
  • 830
  • 2
    It's unclear what you actually _want_ to do. You can't fast-forward, so do you want to rebase your local changes onto the remote? Have a two-parent merge commit somewhere? Did you try pulling again with any of those configs set? There are loads of posts here and elsewhere about `Updates were rejected because ...`, it's hard to see what could be added. – jonrsharpe May 25 '22 at 17:01
  • I want to push the commits I just made to my remote repo. – Dave May 25 '22 at 17:03
  • 3
    Then you must first pull with rebase or without requiring ff only. – matt May 25 '22 at 17:05
  • We're going to need a _little_ more than that. Evidently your local history doesn't apply cleanly to the remote, so you're going to need to do _something_ to make them compatible. How do you want these differences to be resolved? How do you _generally_ resolve them? Are you collaborating with others on this repo? What messages did you get when pulling with other reconciliation strategies? – jonrsharpe May 25 '22 at 17:05
  • @jonrsharpe There are no "conflicts". – matt May 25 '22 at 17:06
  • @matt I meant in a more general sense, but realise that's unhelpful nomenclature in this context; edited, thanks. – jonrsharpe May 25 '22 at 17:08

1 Answers1

1

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
matt
  • 515,959
  • 87
  • 875
  • 1,141