However, the idea of a git branch exists independent of the manner a certain population agrees on its use. It doesn't cease to exist just because you haven't agreed on how to use it.
However, the idea of a git branch exists independent of the manner a certain population agrees on its use. It doesn't cease to exist just because you haven't agreed on how to use it.
No! A set of bits exists on disk. A piece of software (git) interprets those bits as a branch. The idea of a branch exists in the heads of the users - subject to the usual human limitations. While quite a lot of users will be able to be precise about what a branch means in terms of git blobs, there will be people using the tool and talking about branches who don't know that. But an idea, whatever it is, exists only in the way that people think and talk about it.
Even in this thread we have people fighting about what it is: https://news.ycombinator.com/item?id=38999486
That's just what society's conditioned you to think.
I call what you describe there an abstraction. So, feels like I'm going full circle here to my original comment.
My (possibly incorrect or incomplete) understanding is that abstraction is when some complex underlying mechanism is presented in a manner that serves a specific purpose. In essence the difference between an abstraction and a social construct is that an abstraction deals with simplification of ideas and presenting them in a manner that makes it easy to interact with them.
While social constructs are about shared understanding of ideas regardless of whether these are reified in any manner or whether there is are ways to interact and engage with them.
So it could be argued that the abstraction isn’t _actually_ different than the sum of its lower level parts. It’s your understanding as a human (potentially and probably shaped by your society) that makes the abstraction easier to understand than the lower level bits.
A shared understanding (at least between an author of an abstraction and the lower level components it’s built from) is required for a software author to make any abstractions anyway.