git pull
means:
- run
git fetch
, then
- run a second Git command,
git merge
by default, but you can set things up to be different if you like.
If you run it with no arguments (as you presumably did), this means:
git fetch origin
(usually and in your case), and then
git merge HEAD@{upstream}
(assuming your chosen second command is git merge
).
The upstream is a setting, per-branch: you can change it if you want, but that's not what you want here. Your git status
output shows that the upstream of your feature/ABC
is your origin/feature/ABC
, which is correct.
But what this all means is:
- the
git fetch
step obtains all the new commits, including those on their master
branch, so that your origin/master
is updated, and then
- the
git merge
step merges with the old commits you already had all along on your origin/feature/ABC
that corresponds to your feature/ABC
.
Hence, git pull
is not what you want!
What you want, presumably, is:
- run
git fetch
or git fetch origin
; then
- run
git merge origin/master
.
As you're a Git newbie, I recommend avoiding git pull
. Run separate git fetch
and second-command steps, so that you know exactly which step failed if one step does fail. This is important later when it comes to recovering from this failure.
If you prefer to run git pull
, though, the combined convenience form is—partly for historical reasons—git pull origin master
, rather than git pull origin origin/master
, even though you want the merge step to use origin/master
.