---
# System prepended metadata

title: 'One-way Git flow: Feature -> Release -> Master'

---

# One-way Git flow: Feature -> Release -> Master

upstream: the github repo for the whole team
origin: your own github fork of the repo
local: the git repo in your local machine

```graphviz
 digraph G {
     
    node [shape="box"];
    
   newFeature [label = "new feature ticket: PROJ-1356"]
   upstreamMaster [label = "upstream master";]
   upstreamMasterv2 [label = "upstream master (v2)";]

   upstreamKiwi [label = "upstream release/kiwi"]
   upstreamKiwiv2 [label = "upstream release/kiwi (v2)"] 
   localFeatureBranch [label = "local feature/PROJ-1356-do-something"]
   originFeatureBranch [label = "origin feature/PROJ-1356-do-something"]
   local [label = "local git HEAD"]
   
   
   newFeature -> upstreamMaster

   upstreamMaster -> upstreamKiwi [label="create new branch based on latest upstream"]
   
   upstreamKiwi -> local [label = "git fetch && git checkout upstream release/kiwi" ]
   local -> localFeatureBranch [label="git checkout -b feature/PROJ-1356-do-something"]
   localFeatureBranch -> development
   development -> originFeatureBranch [label = "git push -u origin"]
   originFeatureBranch -> upstreamKiwiv2 [label = "Pull Request: squash and merge"]
   upstreamKiwiv2 -> upstreamMasterv2 [label = "Pull Request: merge only (no squash)"]
   upstreamMasterv2 -> newFeature [label="finish"]
}

```

If you want to visually edit the graph, go to http://magjac.com/graphviz-visual-editor/