Subject: Re: Aw: Re: Re: Re: [Bug report] 'git status' always says "Your branch is up-to-date with 'origin/master'"

From: Keshav Kini <[email-masked]>
Date: Tue, 14 Jan 2014 15:34:31 -0800

The following message is a courtesy copy of an article
that has been posted to gmane.comp.version-control.git as well.

Junio C Hamano <[email-masked]> writes:
> Thomas Ackermann <[email-masked]> writes:
>>> > But for the simple use case where you only have a master
>>> > branch I consider it not really helpful and - at least for me -
>>> > misleading.
>>> 
>>> I see what you mean, and you're not the only one.
>>> 
>>> Git follows a rule of "never contact another machine unless explicitly
>>> asked to using a command such as 'git pull' or 'git fetch'".  To
>>> support this, it makes a distinction between (1) the remote-tracking
>>> ref origin/master and (2) the actual branch "master" in the remote
>>> repository.  The former is what is updated by 'git fetch', and the
>>> latter is something git does not know about without talking to the
>>> remote server.
>>> 
>>> What documentation did you use when first starting to learn git?
>>> Perhaps it can be fixed to emphasize the distinction between (1) and
>>> (2) earlier.
>>
>> I think it's not the problem of the documentation but of myself
>> not having it read thorough enough ;-)
>>
>> (This new feature in V1.8.5 of course is not documented in any of the books
>> up to now but in the future could be used to explain the above mentioned
>> rule.)
>
> By the way, this is nothing new in 1.8.5; we didn't bother saying
> up-to-date before, so you may not have noticed, but its silence was
> already telling you that your branch was up-to-date with respect to
> what you are building on top of.

Maybe it would be worthwhile to add a message like "(last fetched from
upstream branch at [date])", taken from
$GIT_DIR/logs/refs/remotes/foo/bar ?  This would mitigate the confusion
Thomas suffered, I think.

Caveat: pretty ill-defined, since 1) if you've been pushing and not
fetching, the most recent time at which it is known that your
remote-tracking branch was up to date could be much newer than when it
was technically "last fetched"; 2) the upstream branch might not
even be a remote-tracking branch; 3) probably something else I haven't
thought of.

-Keshav