git status vs fetch (or pull): How to know what "up-to-date" means (without changing anything)
<p>I do a <code>git status</code> and it says<br>
<code>Your branch is up-to-date with 'origin/master'.</code></p>

<p>But I do a <code>git pull</code> anyway and suddenly it says<br>
<code>14 files changed, ...</code></p>

<p>And I feel like I've been lied to. I suspect git isn't broken. Which must mean I don't understand something.</p>

<p>I do a bit of reading <a href="https://stackoverflow.com/questions/7938723/git-how-to-check-if-a-local-repo-is-up-to-date">here</a> and <a href="https://stackoverflow.com/questions/35212603/git-checkout-and-git-status-both-say-i-am-up-to-date-but-then-git-pull-pulls-ch">here</a> and learn of two non destructive ways to ask if I'm up to date</p>

<p><code>git status -uno</code></p>

<p><code>git fetch --dry-run</code></p>

<p>Since <code>fetch</code> is part of <code>pull</code> I assume these two will disagree the same way the last two did.</p>

<p>What's fundamentally confusing me is I think of 'up-to-date' as meaning: "hey we've compared two copies of this repository (the master branch) and they're the same"</p>

<p>Ok fine, but if I can ask the question two different ways and get two different answers, when each question is about comparing two different copies then doesn't that mean there have to be at least three copies of the repository?</p>

<p>As in:</p>

<blockquote>
  <p>A == B != C</p>
</blockquote>

<p>I know there is a remote copy of master<br>
I know there is my local copy of master</p>

<p>What the heck is this third thing?</p>