• FizzyOrange@programming.dev
    link
    fedilink
    arrow-up
    1
    ·
    13 hours ago

    Git has a mutable map whose keys are strings, and whose values are content-addressed objects. The keys are conventionally formatted as file system paths

    I used to think this too, but I think it’s more accurate to say the keys are filesystem paths. Try creating branches foo and foo/bar. That would be fine if the keys were strings. I vaguely recall there was some effort to make that actually work, but it doesn’t today.

    Do you understand why is it origin master in one command, and origin/master in the other? I didn’t, until a few weeks ago!

    I mean I understood that it was because Git has a terrible CLI, and… that is ultimately still the reason. There’s no fundamental reason it couldn’t have been consistent. It just isn’t.