# Git graph demo

## Simple "branch and merge" graph

        ---
        title: Simple "branch and merge" (left-to-right)
        ---
        gitGraph LR:
        commit
        branch newbranch
        checkout newbranch
        commit
        checkout main
        merge newbranch

        ---
        title: Simple "branch and merge" (top-to-bottom)
        ---
        gitGraph TB:
        commit
        branch newbranch
        checkout newbranch
        commit
        checkout main
        merge newbranch

          ---
          title: Simple "branch and merge" (bottom-to-top)
          ---
          gitGraph BT:
          commit
          branch newbranch
          checkout newbranch
          commit
          checkout main
          merge newbranch

## Continuous development graph

        ---
        title: Continuous development (left-to-right)
        ---
        gitGraph LR:
        commit
        branch develop
        checkout develop
        commit
        checkout main
        merge develop
        checkout develop
        commit
        checkout main
        merge develop

        ---
        title: Continuous development (top-to-bottom)
        ---
        gitGraph TB:
        commit
        branch develop
        checkout develop
        commit
        checkout main
        merge develop
        checkout develop
        commit
        checkout main
        merge develop

          ---
          title: Continuous development (bottom-to-top)
          ---
          gitGraph BT:
          commit
          branch develop
          checkout develop
          commit
          checkout main
          merge develop
          checkout develop
          commit
          checkout main
          merge develop

## Merge feature to advanced main graph

        ---
        title: Merge feature to advanced main (left-to-right)
        ---
        gitGraph LR:
        commit
        branch newbranch
        checkout newbranch
        commit
        checkout main
        commit
        merge newbranch

        ---
        title: Merge feature to advanced main (top-to-bottom)
        ---
        gitGraph TB:
        commit
        branch newbranch
        checkout newbranch
        commit
        checkout main
        commit
        merge newbranch

          ---
          title: Merge feature to advanced main (bottom-to-top)
          ---
          gitGraph BT:
          commit
          branch newbranch
          checkout newbranch
          commit
          checkout main
          commit
          merge newbranch

## Two-way merges

        ---
        title: Two-way merges (left-to-right)
        ---
        gitGraph LR:
        commit
        branch develop
        checkout develop
        commit
        checkout main
        merge develop
        commit
        checkout develop
        merge main
        commit
        checkout main
        merge develop

        ---
        title: Two-way merges (top-to-bottom)
        ---
        gitGraph TB:
        commit
        branch develop
        checkout develop
        commit
        checkout main
        merge develop
        commit
        checkout develop
        merge main
        commit
        checkout main
        merge develop

          ---
          title: Two-way merges (bottom-to-top)
          ---
          gitGraph BT:
          commit
          branch develop
          checkout develop
          commit
          checkout main
          merge develop
          commit
          checkout develop
          merge main
          commit
          checkout main
          merge develop

## Cherry-pick from branch graph

        ---
        title: Cherry-pick from branch (left-to-right)
        ---
        gitGraph LR:
        commit
        branch newbranch
        checkout newbranch
        commit id: "Pick me"
        checkout main
        commit
        checkout newbranch
        commit
        checkout main
        cherry-pick id: "Pick me"

        ---
        title: Cherry-pick from branch (top-to-bottom)
        ---
        gitGraph TB:
        commit
        branch newbranch
        checkout newbranch
        commit id: "Pick me"
        checkout main
        commit
        checkout newbranch
        commit
        checkout main
        cherry-pick id: "Pick me"

          ---
          title: Cherry-pick from branch (bottom-to-top)
          ---
          gitGraph BT:
          commit
          branch newbranch
          checkout newbranch
          commit id: "Pick me"
          checkout main
          commit
          checkout newbranch
          commit
          checkout main
          cherry-pick id: "Pick me"

## Cherry-pick from main graph

        ---
        title: Cherry-pick from main (left-to-right)
        ---
        gitGraph LR:
        commit
        branch develop
        commit
        checkout main
        commit id:"A"
        checkout develop
        commit
        cherry-pick id: "A"

        ---
        title: Cherry-pick from main (top-to-bottom)
        ---
        gitGraph TB:
        commit
        branch develop
        commit
        checkout main
        commit id:"A"
        checkout develop
        commit
        cherry-pick id: "A"

          ---
          title: Cherry-pick from main (bottom-to-top)
          ---
          gitGraph BT:
          commit
          branch develop
          commit
          checkout main
          commit id:"A"
          checkout develop
          commit
          cherry-pick id: "A"

## Cherry-pick then merge graph

        ---
        title: Cherry-pick then merge (left-to-right)
        ---
        gitGraph LR:
        commit
        branch newbranch
        checkout newbranch
        commit id: "Pick me"
        checkout main
        commit
        checkout newbranch
        commit
        checkout main
        cherry-pick id: "Pick me"
        merge newbranch

        ---
        title: Cherry-pick then merge (top-to-bottom)
        ---
        gitGraph TB:
        commit
        branch newbranch
        checkout newbranch
        commit id: "Pick me"
        checkout main
        commit
        checkout newbranch
        commit
        checkout main
        cherry-pick id: "Pick me"
        merge newbranch

          ---
          title: Cherry-pick then merge (bottom-to-top)
          ---
          gitGraph BT:
          commit
          branch newbranch
          checkout newbranch
          commit id: "Pick me"
          checkout main
          commit
          checkout newbranch
          commit
          checkout main
          cherry-pick id: "Pick me"
          merge newbranch

## Merge from main onto undeveloped branch graph

        ---
        title: Merge from main onto undeveloped branch (left-to-right)
        ---
        gitGraph LR:
        commit
        branch develop
        commit
        checkout main
        commit
        checkout develop
        merge main

        ---
        title: Merge from main onto undeveloped branch (top-to-bottom)
        ---
        gitGraph TB:
        commit
        branch develop
        commit
        checkout main
        commit
        checkout develop
        merge main

          ---
          title: Merge from main onto undeveloped branch (bottom-to-top)
          ---
          gitGraph BT:
          commit
          branch develop
          commit
          checkout main
          commit
          checkout develop
          merge main

## Merge from main onto developed branch graph

        ---
        title: Merge from main onto developed branch (left-to-right)
        ---
        gitGraph LR:
        commit
        branch develop
        commit
        checkout main
        commit
        checkout develop
        commit
        merge main

        ---
        title: Merge from main onto developed branch (top-to-bottom)
        ---
        gitGraph TB:
        commit
        branch develop
        commit
        checkout main
        commit
        checkout develop
        commit
        merge main

          ---
          title: Merge from main onto developed branch (bottom-to-top)
          ---
          gitGraph BT:
          commit
          branch develop
          commit
          checkout main
          commit
          checkout develop
          commit
          merge main

## Two branches from same commit graph

        ---
        title: Two branches from same commit (left-to-right)
        ---
        gitGraph LR:
        commit
        commit
        branch feature-001
        commit
        commit
        checkout main
        branch feature-002
        commit
        checkout feature-001
        merge feature-002

        ---
        title: Two branches from same commit (top-to-bottom)
        ---
        gitGraph TB:
        commit
        commit
        branch feature-001
        commit
        commit
        checkout main
        branch feature-002
        commit
        checkout feature-001
        merge feature-002

          ---
          title: Two branches from same commit (bottom-to-top)
          ---
          gitGraph BT:
          commit
          commit
          branch feature-001
          commit
          commit
          checkout main
          branch feature-002
          commit
          checkout feature-001
          merge feature-002

## Three branches and a cherry-pick from each graph

        ---
        title: Three branches and a cherry-pick from each (left-to-right)
        ---
        gitGraph LR:
        commit id: "ZERO"
        branch develop
        commit id:"A"
        checkout main
        commit id:"ONE"
        checkout develop
        commit id:"B"
        branch featureA
        commit id:"FIX"
        commit id: "FIX-2"
        checkout main
        commit id:"TWO"
        cherry-pick id:"A"
        commit id:"THREE"
        cherry-pick id:"FIX"
        checkout develop
        commit id:"C"
        merge featureA

        ---
        title: Three branches and a cherry-pick from each (top-to-bottom)
        ---
        gitGraph TB:
        commit id: "ZERO"
        branch develop
        commit id:"A"
        checkout main
        commit id:"ONE"
        checkout develop
        commit id:"B"
        branch featureA
        commit id:"FIX"
        commit id: "FIX-2"
        checkout main
        commit id:"TWO"
        cherry-pick id:"A"
        commit id:"THREE"
        cherry-pick id:"FIX"
        checkout develop
        commit id:"C"
        merge featureA

        ---
        title: Three branches and a cherry-pick from each (bottom-to-top)
        ---
        gitGraph BT:
        commit id: "ZERO"
        branch develop
        commit id:"A"
        checkout main
        commit id:"ONE"
        checkout develop
        commit id:"B"
        branch featureA
        commit id:"FIX"
        commit id: "FIX-2"
        checkout main
        commit id:"TWO"
        cherry-pick id:"A"
        commit id:"THREE"
        cherry-pick id:"FIX"
        checkout develop
        commit id:"C"
        merge featureA