Already up to date. and Everything up-to-date
Both mean Git found nothing to do. They are spelled differently because they come from different parts of Git, and they check different things.
$ git pull
Already up to date.
$ git push
Everything up-to-date
What each one checked
git pull fetches, then asks whether origin/main has a commit your
main lacks. If it doesn't, there is nothing to merge or rebase, and the merge machinery says
Already up to date.: a sentence, with a full stop.
git push asks the opposite: whether the remote's main lacks a commit yours has. If
it doesn't, there is nothing to send, and the push machinery says Everything up-to-date: hyphens,
no full stop. Git dropped the hyphens from the merge's message years ago and never from the push's. Both are
correct output today, so these pages leave them as they are.
The line between them
git status doesn't talk to the remote. It compares your main with
origin/main as of your last fetch, and counts: ahead by the commits you have and it doesn't,
behind by the reverse.
$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
Ahead means a push has something to send. Behind means a pull has something to bring. Both at once means the branches have diverged, which is where the forced update page leaves bot. Neither, and the two commands above print their nothing-to-do lines:
$ git status
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean
Why the game does this to you
A day's pack can push with nothing to push, or pull at the tip. The remote prints the same two lines, and charges nothing: an op with nothing to do is free in Git Game, so the pull written before every push costs you only on the days it brings something in.
Play a day where this happens
One tap starts a game against the bot, and your first pull is written for you.
Output captured from Git 2.50.1 (Apple Git-155) by scripts/git-output.sh, in a scratch repository with two clones, ana's and bot's, and fixed dates, so the hashes are the same on every run. It is captured again at every Git release.