BRANCH VS ENVIRONMENT
This is where the Infrastructure and Operations side comes into play.
Man I wish I could whiteboard this for you... its much easier to explain visual than with words... but i'll try my best.
The number one mistake people make when trying to understand DevOps is that they confuse
Branching Strategies with Environments.
And it makes sense, because many large companies do have a Prod/Dev/QA environment that are all fully isolated(VLAN and in some cases physically) so they assume the branching strategies are one-to-one with the environments.
The answer to that is... sometimes but not necessarily.
And when I say sometimes I mean that some companies have code that automatically pushes their commits to the proper environment. But that's an after the fact, the two are not the same inherently.
This is really hard to explain without me being there to show you but try to picture this....
Assume in the above example we are working on a website, lets call it the
TheMoli.com
TheMoli.com that everyone reads and posts on lives on our server called
PROD-WEB-01.
That is our public facing production web server.
However we also have a dev server called
DEV-WEB-01.
This is where we work on changes to TheMoli.com like removing neg limits.
Well in order for TheMoli Dev environment to exist, someone (infrastructure) has to pull down the code from production and compile/build/run it on the Dev environment so our Dev sandbox is up to date.
This is usually done on an schedule unless your company has an advance (agile) dev process.
So my change above was to change the color of TheMoli.com's banner... that was in the Dev Branch.
I made that change in my ticket branch (offshoot of the Dev branch), but not in the actual Dev environment.
Why not? I'm working off of the Dev branch, why wouldn't my change go live in the Dev environment?
Well because everyone else who is currently working in the Dev Environment will see the exact same banner changes are making if they hydrate their ticket branches. That's why we have to have 3 branches (A release branch).
So even though i'm working off code from the Dev branch, i'm not actually
editing the Dev Environment.
So how does that work? How can I edit it and see the changes without changing the environment? Simple, I have my own environment, this is where I work.
Its called an IDE (Integrated Deveoplemnt Enviroment)
Many of these exists. I currently have 7 installed on my personal computer

Visual Studio, Eclipse, Netbeans, etc
You've seen them before, they look like this:
So I do my changes here, preview them here, and I think its good

. That pull request I submit will pull it into the Release branch (not dev) and create what is known as a
"RELEASE CANDIDATE".
This is code that has been approved, tested, etc etc and will eventually be promoted to Master.
