Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

>It's a lie of omission.

but it's not?

if you have an old bank receipt that says you have $450 in your account, but you actually have $310, you need to "get" a new receipt that has the newest value.

you do that by issuing git fetch origin. then you can git merge origin/master to make everything up-to-date.



Bank receipts always have a date and time, that's _exactly_ the point I am making, the omission is part of the lie.


you are getting confused here.

what you have is a "paper receipt" (your checked out version) from your bank. something that, if you need an up-to-date version (from another remote), you need to request a new one (by issuing git fetch).

git is, by default, distributed, so whenever you need to see the world outside, you need to be explicit. linus made it this way because back in the day (not sure right now tbf) tons of kernel developers do work without any internet connection, and would only connect to pull/send patches.

this talk[0] by linus from 2007 (i remember watching it on google videos lol) explains really well where the git mentality came from. i really recommend it to you, since it feels like you are not really getting how git works.

[0]https://www.youtube.com/watch?v=4XpnKHJAok8


If you have a paper recipt (git status) it tells you when it was up to date, so you can determine whether you need a new one. Git doesn't provide that info. That's the problem, not that it can be outdated, but that it omits the date/time!


It’s a little offensive to tell another person that they are confused. If they are confused, they can say so.


Very good point. “Up to date with origin/master as of 4 hours ago” would be an improvement.


That is a lie though. Who knows if the remote has been updated? You wouldn't find out about that 4 hours until you did a fetch.

You can't go to the hotel desk clerk and ask if you have any messages. Then for the next four hours keep telling people "the front desk has no messages for me" despite you not asking them in the last 4 hours. Things could change!


No, this is exactly like a receipt from the ATM. “Your bank balance is $300.00 as of 10/10/23 10:10.” That was weeks ago, so I know to ignore it. The wording can likely be improved. Maybe “You are up to date with origin/master as last fetched 4 hours ago”.


> That was weeks ago, so I know to ignore it.

But you haven't talked to your bank, used an ATM, or been on the app in weeks! Your balance could be totally different - bills have came out, you got paid, interest, etc.

You are making my point! You know to ignore it because its old, outdated information.

Then why are you telling me this? How is it useful to me?

Of course youre up to date with what you last fetched - that is _always_ the case.

Why mention being up to date even? Just tell the user when they last synced with their remote(s).


> Of course youre up to date with what you last fetched - that is _always_ the case.

This might be where the misunderstanding is. You are not always up to date with what you last fetched. Say you have develop checked out, and you run a git pull. As part of that process, git checks the status of all upstream branches, and updates your local reference copy of them (that’s what origin/develop, origin/production, origin/feature-branch-1 are: your local reference copies of upstream). Then you check out production, which you last touched two weeks ago. Git will let you know that your two-week-old local copy is behind origin/production, which is your local reference copy of what it just saw when it fetched from upstream.


You're making their point! `git status`tells you the status as of whenever you last fetched, and omits that timestamp. You can't tell if it's outdated, because it doesn't tell you when the last update was!


> Of course youre up to date with what you last fetched - that is _always_ the case.

But that is not what this message is about. It's confusingly worded, as many people agree, but what it says is that your local ref "main" points to the same commit as your local ref "origin/main." It says nothing about "main" on the other computer/server.

And it is not the case (i.e. you are not up to date with origin/main), for example, when you have committed to main but haven't pushed. It is also not the case when you have fetched but not merged.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: