Usage ===== GitGraph allows the creation of Git Graphs. GitGraph accepts Git items - branches, commits, checkouts, cherry picks, and merges - and renders them in the order that they are added. Example ------- PHP +++ .. code-block:: php $mainBranch = new Branch('main'); echo Mermaid::create(GitGraph::class, ['title' => 'Project Git Graph']) ->withItem( new Commit(), $hotfix = new Branch('hotfix'), $checkoutHotfix = new Checkout($hotfix), new Commit(), $develop = new Branch('develop'), $checkoutDevelop = new Checkout($develop), $featureB = new Branch('featureB'), $checkoutFeatureB = new Checkout($featureB), new Commit(type: CommitType::highlight), $checkoutHotfix, new Commit(), new Checkout($develop), new Commit(type: CommitType::reverse), $checkoutFeatureB, new Commit(), $checkoutMain = new Checkout($main), new Merge($hotfix), $checkoutFeatureB, new Commit(), $featureA = new Branch('featureA'), $ash = new Commit('ash', 'abc'), $checkoutDevelop, new CherryPick($ash), new Merge($hotfix), new Checkout($featureA), new Commit(), $checkoutFeatureB, new Commit(), $checkoutDevelop, new Merge($featureA), $release = new Branch('release'), $checkoutRelease = new Checkout($release), new Commit(), $checkoutMain, new Commit(), $checkoutRelease, new Merge($featureB), new Merge($main), new Merge($develop) ) ->render() ; Generated Mermaid +++++++++++++++++ .. code-block:: html
    ---
    title: Project Git Graph
    ---
    gitGraph LR:
      commit
      branch "hotfix"
      checkout "hotfix"
      commit
      branch "develop"
      checkout "develop"
      branch "featureB"
      checkout "featureB"
      commit type:HIGHLIGHT
      checkout "hotfix"
      commit
      checkout "develop"
      commit type:REVERSE
      checkout "featureB"
      commit
      checkout "main"
      merge "hotfix"
      checkout "featureB"
      commit
      branch "featureA"
      commit id:"ash" tag:"abc"
      checkout "develop"
      cherry-pick id:"ash"
      merge "hotfix"
      checkout "featureA"
      commit
      checkout "featureB"
      commit
      checkout "develop"
      merge "featureA"
      branch "release"
      checkout "release"
      commit
      checkout "main"
      commit
      checkout "release"
      merge "featureB"
      merge "main"
      merge "develop"
    
Mermaid Diagram +++++++++++++++ .. mermaid:: --- title: Project Git Graph --- gitGraph LR: commit branch "hotfix" checkout "hotfix" commit branch "develop" checkout "develop" branch "featureB" checkout "featureB" commit type:HIGHLIGHT checkout "hotfix" commit checkout "develop" commit type:REVERSE checkout "featureB" commit checkout "main" merge "hotfix" checkout "featureB" commit branch "featureA" commit id:"ash" tag:"abc" checkout "develop" cherry-pick id:"ash" merge "hotfix" checkout "featureA" commit checkout "featureB" commit checkout "develop" merge "featureA" branch "release" checkout "release" commit checkout "main" commit checkout "release" merge "featureB" merge "main" merge "develop"