<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Introduction to Git Sync on Grafana Labs</title><link>https://grafana.com/docs/grafana/v13.0/as-code/observability-as-code/git-sync/</link><description>Recent content in Introduction to Git Sync on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/grafana/v13.0/as-code/observability-as-code/git-sync/index.xml" rel="self" type="application/rss+xml"/><item><title>Git Sync Key concepts</title><link>https://grafana.com/docs/grafana/v13.0/as-code/observability-as-code/git-sync/key-concepts/</link><pubDate>Thu, 23 Apr 2026 11:39:03 +0000</pubDate><guid>https://grafana.com/docs/grafana/v13.0/as-code/observability-as-code/git-sync/key-concepts/</guid><content><![CDATA[&lt;h1 id=&#34;git-sync-key-concepts&#34;&gt;Git Sync key concepts&lt;/h1&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Git Sync is now GA for Grafana Cloud, OSS and Enterprise.&lt;/strong&gt; Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/usage-limits/&#34;&gt;Usage and performance limitations&lt;/a&gt; to understand usage limits for the different tiers.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;/help/&#34;&gt;Contact Grafana&lt;/a&gt; for support or to report any issues you encounter and help us improve this feature.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h2 id=&#34;key-git-sync-components&#34;&gt;Key Git Sync components&lt;/h2&gt;
&lt;p&gt;Before you start using Git Sync, understand how the key Git Sync components relate:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#grafana-instance&#34;&gt;Grafana instance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#git-repository&#34;&gt;Git repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#git-sync-repository-resource&#34;&gt;Git Sync repository resource&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#git-sync-connection&#34;&gt;Git Sync connection&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;grafana-instance&#34;&gt;Grafana instance&lt;/h3&gt;
&lt;p&gt;A Grafana instance is a running Grafana server. Multiple instances can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Connect to the same Git repository using different Repository configurations.&lt;/li&gt;
&lt;li&gt;Sync from different branches of the same repository.&lt;/li&gt;
&lt;li&gt;Sync from different paths within the same repository.&lt;/li&gt;
&lt;li&gt;Sync from different repositories.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;git-repository&#34;&gt;Git repository&lt;/h3&gt;
&lt;p&gt;A Git repository is the external storage you want to sync your Grafana instance with. You can organize your Git repository in several ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Single branch, multiple paths: Use different directories for different purposes. For example, &lt;code&gt;dev/&lt;/code&gt;, &lt;code&gt;prod/&lt;/code&gt;, or &lt;code&gt;team-a/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Multiple branches: Use different branches for different environments or teams. For example, &lt;code&gt;main&lt;/code&gt;, &lt;code&gt;develop&lt;/code&gt;, or &lt;code&gt;team-a&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Multiple repositories: Use separate repositories for different teams or environments.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;flexible-configuration-for-your-git-sync-repositories&#34;&gt;Flexible configuration for your Git Sync repositories&lt;/h4&gt;
&lt;p&gt;Git Sync repositories support different combinations of repository URL, branch, and path:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Different Git repositories: Each environment or team can use its own repository.
&lt;ul&gt;
&lt;li&gt;Instance A: &lt;code&gt;repository: your-org/grafana-prod&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Instance B: &lt;code&gt;repository: your-org/grafana-dev&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Different branches: Use separate branches within the same repository.
&lt;ul&gt;
&lt;li&gt;Instance A: &lt;code&gt;repository: your-org/grafana-manifests, branch: main&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Instance B: &lt;code&gt;repository: your-org/grafana-manifests, branch: develop&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Different paths: Use different directory paths within the same repository.
&lt;ul&gt;
&lt;li&gt;Instance A: &lt;code&gt;repository: your-org/grafana-manifests, branch: main, path: production/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Instance B: &lt;code&gt;repository: your-org/grafana-manifests, branch: main, path: development/&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Any combination: Mix and match based on your workflow requirements.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;git-sync-repository-resource&#34;&gt;Git Sync repository resource&lt;/h3&gt;
&lt;p&gt;A repository resource is a Grafana configuration object that defines the connection between a group of repositories and your Grafana instance via Git Sync.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Which Git repository to sync with your Grafana instance.&lt;/li&gt;
&lt;li&gt;Which branch to use.&lt;/li&gt;
&lt;li&gt;Which directory path to synchronize.&lt;/li&gt;
&lt;li&gt;Sync behavior and workflows.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each repository resource creates bidirectional synchronization between a Grafana instance and a specific location in Git.&lt;/p&gt;
&lt;h3 id=&#34;git-sync-connection-resource&#34;&gt;Git Sync connection resource&lt;/h3&gt;
&lt;p&gt;A connection is the authentication setup between Grafana and an external Git provider, required when you&amp;rsquo;re not using a Personal Access Token or a static token to authenticate. Use it to authorize access to your external repositories, and to generate or refresh the credentials for Git Sync. A single connection can be reused across multiple repositories.&lt;/p&gt;
&lt;p&gt;For example, if you&amp;rsquo;re using GitHub App to authenticate, the connection represents the app installation. Grafana uses this connection to authenticate with GitHub, create access tokens, and authorize repository access on your behalf.&lt;/p&gt;
&lt;p&gt;The connection resource includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The external provider configuration: The authentication mechanism Grafana uses to communicate with the Git provider (for example, a GitHub App).&lt;/li&gt;
&lt;li&gt;The provider authorization or installation: The authorized entity that allows Grafana to request tokens from the provider.&lt;/li&gt;
&lt;li&gt;Repository access scope: The set of repositories that the connection (and therefore, Grafana) is authorized to access in the Git provider.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;how-does-git-sync-behave&#34;&gt;How does Git Sync behave?&lt;/h2&gt;
&lt;p&gt;Git Sync is bidirectional, and syncs a repository resource with your Grafana instance. You can modify provisioned resources both from the Grafana UI or from the synced GitHub repository, and changes will be reflected in both places:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Grafana monitors the specified Git location (repository, branch, and path).&lt;/li&gt;
&lt;li&gt;Grafana creates a folder in Dashboards (typically named after the repository).&lt;/li&gt;
&lt;li&gt;Grafana creates dashboards from dashboard JSON files in Git within this folder.&lt;/li&gt;
&lt;li&gt;Grafana commits dashboard changes made in the UI back to Git.&lt;/li&gt;
&lt;li&gt;Grafana pulls dashboard changes made in Git and updates dashboards in the UI.&lt;/li&gt;
&lt;li&gt;Synchronization occurs at regular intervals (configurable), or instantly if you use webhooks.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You can find the provisioned dashboards organized in folders under &lt;strong&gt;Dashboards&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&#34;git-sync-states&#34;&gt;Git Sync states&lt;/h3&gt;
&lt;p&gt;Your Grafana instance can be in one of the following Git Sync states:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Unprovisioned&lt;/strong&gt;: None of the instance&amp;rsquo;s resources are being managed by Git Sync.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Partially provisioned&lt;/strong&gt;: Some of the resources are controlled by Git Sync.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fully provisioned&lt;/strong&gt;: All supported resource types are managed by Git Sync. Unsupported resources are &lt;strong&gt;not managed&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;example-relationship-between-repository-branch-and-path&#34;&gt;Example: Relationship between repository, branch, and path&lt;/h2&gt;
&lt;p&gt;Here&amp;rsquo;s an example showing how the repository, branch, and path concepts work together:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Configuration:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Repository&lt;/strong&gt;: &lt;code&gt;your-org/grafana-manifests&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Branch&lt;/strong&gt;: &lt;code&gt;main&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Path&lt;/strong&gt;: &lt;code&gt;team-platform/grafana/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;In Git (on branch &lt;code&gt;main&lt;/code&gt;):&lt;/strong&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;your-org/grafana-manifests/
├── .git/
├── README.md
├── team-platform/
│   └── grafana/
│       ├── cpu-metrics.json       ← Synced
│       ├── memory-usage.json      ← Synced
│       └── disk-io.json           ← Synced
├── team-data/
│   └── grafana/
│       └── pipeline-stats.json    ← Not synced (different path)
└── other-files.txt                ← Not synced (outside path)&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;In the Grafana Dashboards view:&lt;/strong&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;Dashboards
└── 📁 grafana-manifests/
    ├── CPU Metrics Dashboard
    ├── Memory Usage Dashboard
    └── Disk I/O Dashboard&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Key takeaways:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Grafana only synchronizes files within the specified path (&lt;code&gt;team-platform/grafana/&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Grafana ignores files in other paths or at the repository root.&lt;/li&gt;
&lt;li&gt;The folder name in Grafana comes from the repository name.&lt;/li&gt;
&lt;li&gt;Dashboard titles come from the JSON file content, not the filename.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="git-sync-key-concepts">Git Sync key concepts&lt;/h1>
&lt;div class="admonition admonition-note">&lt;blockquote>&lt;p class="title text-uppercase">Note&lt;/p>&lt;p>&lt;strong>Git Sync is now GA for Grafana Cloud, OSS and Enterprise.&lt;/strong> Refer to
&lt;a href="/docs/grafana/v13.0/as-code/observability-as-code/git-sync/usage-limits/">Usage and performance limitations&lt;/a> to understand usage limits for the different tiers.&lt;/p></description></item><item><title>Usage and performance limitations</title><link>https://grafana.com/docs/grafana/v13.0/as-code/observability-as-code/git-sync/usage-limits/</link><pubDate>Wed, 13 May 2026 14:28:21 +0000</pubDate><guid>https://grafana.com/docs/grafana/v13.0/as-code/observability-as-code/git-sync/usage-limits/</guid><content><![CDATA[&lt;h1 id=&#34;usage-and-performance-limitations&#34;&gt;Usage and performance limitations&lt;/h1&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Git Sync is now GA for Grafana Cloud, OSS and Enterprise.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;/help/&#34;&gt;Contact Grafana&lt;/a&gt; for support or to report any issues you encounter and help us improve this feature.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h2 id=&#34;performance-considerations&#34;&gt;Performance considerations&lt;/h2&gt;
&lt;p&gt;When Git Sync is enabled, the database load might increase, especially if your Grafana instance has many folders and nested folders. Evaluate the performance impact, if any, in a non-production environment.&lt;/p&gt;
&lt;h2 id=&#34;usage-tiers&#34;&gt;Usage tiers&lt;/h2&gt;
&lt;p&gt;The following Git Sync per-tier limits apply:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Tier&lt;/th&gt;
              &lt;th&gt;&lt;strong&gt;Cloud - Free&lt;/strong&gt;&lt;/th&gt;
              &lt;th&gt;&lt;strong&gt;Cloud - Other&lt;/strong&gt;&lt;/th&gt;
              &lt;th&gt;&lt;strong&gt;On-prem OSS&lt;/strong&gt;&lt;/th&gt;
              &lt;th&gt;&lt;strong&gt;On-prem Enterprise&lt;/strong&gt;&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;Amount of repositories&lt;/td&gt;
              &lt;td&gt;1&lt;/td&gt;
              &lt;td&gt;10&lt;/td&gt;
              &lt;td&gt;10&lt;/td&gt;
              &lt;td&gt;10&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Amount of synced resources per repository&lt;/td&gt;
              &lt;td&gt;20&lt;/td&gt;
              &lt;td&gt;1,000&lt;/td&gt;
              &lt;td&gt;No limit&lt;/td&gt;
              &lt;td&gt;No limit&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;modify-your-usage-limits&#34;&gt;Modify your usage limits&lt;/h3&gt;
&lt;p&gt;Before changing your usage limits, study your specific use case. Design the repository structure carefully, and determine how many repositories and how many resources you can support. For example, setting over 1,000 resources per repository may impact your system&amp;rsquo;s performance.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re a Cloud user, contact Support to modify the amount of repositories you can sync.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re an on-prem user, you can customize your limits via configuration settings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;max_repositories&lt;/code&gt; to set the amount of repositories you can sync. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/setup-grafana/configure-grafana/#max_repositories&#34;&gt;&lt;code&gt;max_repositories&lt;/code&gt;&lt;/a&gt; in the Configure Grafana section to learn more.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;max_resources_per_repository&lt;/code&gt; to set the amount of resources per repository to sync. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/setup-grafana/configure-grafana/#max_resources_per_repository&#34;&gt;&lt;code&gt;max_resources_per_repository&lt;/code&gt;&lt;/a&gt; in the Configure Grafana section to learn more.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;nested-folders&#34;&gt;Nested folders&lt;/h3&gt;
&lt;p&gt;Git Sync supports up to four nested folders within a repository.&lt;/p&gt;
&lt;h2 id=&#34;compatible-git-providers&#34;&gt;Compatible Git providers&lt;/h2&gt;
&lt;p&gt;Git Sync is available for any Git provider through a Pure Git repository type, and has specific enhanced integrations for GitHub, GitLab and Bitbucket.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;&lt;strong&gt;Provider&lt;/strong&gt;&lt;/th&gt;
              &lt;th&gt;&lt;strong&gt;Available in&lt;/strong&gt;&lt;/th&gt;
              &lt;th&gt;&lt;strong&gt;Authentication&lt;/strong&gt;&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;Pure Git&lt;/td&gt;
              &lt;td&gt;Cloud, OSS, Enterprise&lt;/td&gt;
              &lt;td&gt;Personal Access Token&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;GitHub&lt;/td&gt;
              &lt;td&gt;Cloud, OSS, Enterprise&lt;/td&gt;
              &lt;td&gt;Personal Access Token or GitHub App&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;GitLab&lt;/td&gt;
              &lt;td&gt;Cloud, Enterprise&lt;/td&gt;
              &lt;td&gt;Personal Access Token&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Bitbucket&lt;/td&gt;
              &lt;td&gt;Cloud, Enterprise&lt;/td&gt;
              &lt;td&gt;API token with scopes&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;Note that Pure Git, GitLab and Bitbucket are supported in Grafana v12.4.x or later only. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/git-sync-setup/set-up-before/#enable-git-providers&#34;&gt;Enable Git providers&lt;/a&gt; to set them up.&lt;/p&gt;
&lt;h3 id=&#34;the-pure-git-repository-type&#34;&gt;The Pure Git repository type&lt;/h3&gt;
&lt;p&gt;The Pure Git repository type uses the &lt;a href=&#34;https://git-scm.com/docs/protocol-v2&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Smart HTTP protocol v2&lt;/a&gt; (Git over HTTPS), with no provider-specific logic. Pure Git delivers the core Git Sync workflow: your repository is the source of truth, you may edit dashboards in the UI, and Grafana stays in sync.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;Pure Git only supports &lt;strong&gt;Smart HTTP protocol v2&lt;/strong&gt;. Earlier protocol versions (v1, v0) and SSH transport are not supported.&lt;/p&gt;
&lt;p&gt;Make sure your Git server supports protocol v2 over HTTPS. Some providers, like Azure DevOps, only use v1 and are therefore not compatible with Git Sync.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;However, Pure Git doesn&amp;rsquo;t include any features that require provider APIs, such as webhook-driven instant sync, automated PR comments, or deep links to source files.&lt;/p&gt;
&lt;h3 id=&#34;enhanced-integrations-github-github-enterprise-gitlab-bitbucket&#34;&gt;Enhanced integrations: GitHub, GitHub Enterprise, GitLab, Bitbucket&lt;/h3&gt;
&lt;p&gt;If your Git provider is GitHub, GitLab, or Bitbucket, use the enhanced integration. Enhanced integrations understand the platform you&amp;rsquo;re using, allowing workflows that feel native: automated pull request comments with dashboard previews, instant webhook-based sync, or direct navigation from Grafana to source files in your provider&amp;rsquo;s UI.&lt;/p&gt;
&lt;p&gt;The GitHub enhanced integration is the most feature-complete experience today. It enables richer pull request workflows, deeper linking between Grafana and GitHub, and tighter integration into review processes. It is available in Grafana OSS, Enterprise, and Cloud.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;&lt;strong&gt;GitHub Enterprise Server&lt;/strong&gt; is currently only supported through the Pure Git repository type. A dedicated enhanced integration for GitHub Enterprise Server is planned for upcoming releases.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;The GitLab and Bitbucket integrations have limited functionality for the moment, and are only available in Grafana Enterprise and Grafana Cloud. Expect continued improvements around pull request workflows, linking, and sync behavior in upcoming releases.&lt;/p&gt;
&lt;h2 id=&#34;resource-support-and-compatibility&#34;&gt;Resource support and compatibility&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Git Sync only supports dashboards and folders&lt;/strong&gt;. Alerts, data sources, panels and other resources are not supported yet.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re a Grafana Cloud user, you can check the &lt;a href=&#34;https://grafana.ideas.aha.io/ideas&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Grafana roadmap portal&lt;/a&gt; to learn about future improvements.&lt;/p&gt;
&lt;h3 id=&#34;resource-compatibility&#34;&gt;Resource compatibility&lt;/h3&gt;
&lt;p&gt;If you&amp;rsquo;re using Git Sync in Grafana OSS or Grafana Enterprise, some supported resources might be in an incompatible data format. If this happens, syncing will be blocked. Compatibility issues will be fixed with an upcoming migration tool.&lt;/p&gt;
&lt;p&gt;A resource can be:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Is the resource?&lt;/th&gt;
              &lt;th&gt;&lt;strong&gt;Compatible&lt;/strong&gt;&lt;/th&gt;
              &lt;th&gt;&lt;strong&gt;Incompatible&lt;/strong&gt;&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Supported&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;The resource can be managed with Git Sync.&lt;/td&gt;
              &lt;td&gt;The resource is supported but has compatibility issues. It &lt;strong&gt;cannot&lt;/strong&gt; be managed with Git Sync.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Unsupported&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;The resource is &lt;strong&gt;not&lt;/strong&gt; supported and &lt;strong&gt;cannot&lt;/strong&gt; be managed with Git Sync.&lt;/td&gt;
              &lt;td&gt;Not applicable.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;known-limitations&#34;&gt;Known limitations&lt;/h2&gt;
&lt;h3 id=&#34;migration-to-git-sync&#34;&gt;Migration to Git Sync&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Full-instance sync is experimental.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When migrating to resources to Git Sync, you can still create, edit or delete resources, but changes may not be exported. The duration of this process depends on the number of resources involved.&lt;/p&gt;
&lt;p&gt;When migrating existing dashboards, the folder structure will be replicated in the repository. You may need to manually remove or manage original folders after the migration.&lt;/p&gt;
&lt;h3 id=&#34;use-existing-resources&#34;&gt;Use existing resources&lt;/h3&gt;
&lt;p&gt;If you want to manage existing resources with Git Sync, you can save them from the UI, save them as JSON files and commit them to the synced repository, or use &lt;code&gt;gcx&lt;/code&gt;. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/export-resources/&#34;&gt;Export non-provisioned resources from Grafana&lt;/a&gt; for more details.&lt;/p&gt;
&lt;h3 id=&#34;restore-resources&#34;&gt;Restore resources&lt;/h3&gt;
&lt;p&gt;Restoring resources from the UI is currently not possible. As an alternative, you can restore dashboards directly in your GitHub repository by raising a PR, and they will be updated in Grafana.&lt;/p&gt;
]]></content><description>&lt;h1 id="usage-and-performance-limitations">Usage and performance limitations&lt;/h1>
&lt;div class="admonition admonition-note">&lt;blockquote>&lt;p class="title text-uppercase">Note&lt;/p>&lt;p>&lt;strong>Git Sync is now GA for Grafana Cloud, OSS and Enterprise.&lt;/strong>&lt;/p>
&lt;p>&lt;a href="/help/">Contact Grafana&lt;/a> for support or to report any issues you encounter and help us improve this feature.&lt;/p></description></item><item><title>Set up Git Sync</title><link>https://grafana.com/docs/grafana/v13.0/as-code/observability-as-code/git-sync/git-sync-setup/</link><pubDate>Wed, 29 Apr 2026 10:14:30 +0000</pubDate><guid>https://grafana.com/docs/grafana/v13.0/as-code/observability-as-code/git-sync/git-sync-setup/</guid><content><![CDATA[&lt;h1 id=&#34;set-up-git-sync&#34;&gt;Set up Git Sync&lt;/h1&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Git Sync is now GA for Grafana Cloud, OSS and Enterprise.&lt;/strong&gt; Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/usage-limits/&#34;&gt;Usage and performance limitations&lt;/a&gt; to understand usage limits for the different tiers.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;/help/&#34;&gt;Contact Grafana&lt;/a&gt; for support or to report any issues you encounter and help us improve this feature.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;To set up Git Sync and synchronize your Grafana dashboards and folders with a GitHub repository, follow these steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Read 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/git-sync-setup/set-up-before/&#34;&gt;Before you begin&lt;/a&gt; carefully.&lt;/li&gt;
&lt;li&gt;Set up Git Sync &lt;a href=&#34;#set-up-git-sync-using-the-ui&#34;&gt;using the UI&lt;/a&gt;, with 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/git-sync-setup/set-up-terraform/&#34;&gt;Terraform&lt;/a&gt;, or 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/git-sync-setup/set-up-code/&#34;&gt;as code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;After setup, &lt;a href=&#34;#verify-your-dashboards-in-grafana&#34;&gt;verify your dashboards&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Optionally, you can also 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/git-sync-setup/set-up-extend/&#34;&gt;extend Git Sync with webhooks and image rendering&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;set-up-git-sync-using-the-ui&#34;&gt;Set up Git Sync using the UI&lt;/h2&gt;
&lt;p&gt;To set up Git Sync from the Grafana UI, follow these steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Log in to your Grafana server with an account that has the Grafana Admin flag set.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Administration &amp;gt; General &amp;gt; Provisioning&lt;/strong&gt; in the left-side menu to access the Git Sync configuration screen. If you already have an active Git Sync connection, go to the &lt;strong&gt;Get started&lt;/strong&gt; tab.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#select-your-provider&#34;&gt;Select your provider&lt;/a&gt; to start a new Git Sync setup: GitHub, GitLab, Bitbucket, or Pure Git.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#configure-the-provisioning-repository&#34;&gt;Configure the provisioning repository&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#choose-what-to-synchronize&#34;&gt;Choose what content to sync with Grafana&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#synchronize-with-external-storage&#34;&gt;Synchronize with external storage&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#choose-additional-settings&#34;&gt;Choose additional settings&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;select-your-provider&#34;&gt;Select your provider&lt;/h2&gt;
&lt;p&gt;Git Sync is available for any Git provider through a Pure Git repository type, and has specific enhanced integrations for GitHub, GitLab and Bitbucket. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/usage-limits/#compatible-providers&#34;&gt;Compatible providers&lt;/a&gt; for more details.&lt;/p&gt;
&lt;p&gt;Alternatively, on-prem file provisioning in Grafana lets you include resources, including folders and dashboard JSON files, that are stored in a local file system. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/provision-resources/&#34;&gt;Provision resources on-prem&lt;/a&gt; for more details.&lt;/p&gt;
&lt;p&gt;Select any of these options to proceed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/git-sync-setup/#configure-with-github&#34;&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/git-sync-setup/#configure-with-gitlab&#34;&gt;GitLab&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/git-sync-setup/#configure-with-bitbucket&#34;&gt;Bitbucket&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/git-sync-setup/#configure-with-pure-git&#34;&gt;Pure Git&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;configure-with-github&#34;&gt;Configure with GitHub&lt;/h3&gt;
&lt;p&gt;If you want to configure Git Sync for public cloud GitHub, you can connect using a &lt;strong&gt;Personal Access Token&lt;/strong&gt; or with &lt;strong&gt;GitHub App&lt;/strong&gt;.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;If you&amp;rsquo;re using self-hosted GitHub servers or GitHub Enterprise refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/git-sync-setup/#configure-with-pure-git&#34;&gt;Configure with Pure Git&lt;/a&gt; for instructions on how to set up Git Sync.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h4 id=&#34;connect-with-a-github-personal-access-token&#34;&gt;Connect with a GitHub Personal Access Token&lt;/h4&gt;
&lt;p&gt;If you want to configure Git Sync for GitHub and authenticate with a Personal Access Token, sign in to GitHub and &lt;a href=&#34;https://github.com/settings/personal-access-tokens/new&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;create a new fine-grained personal access token&lt;/a&gt; with these permissions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Administration&lt;/strong&gt;: Read-only permission (enables validation of branch protection rules against the configured branch when users can push directly to it; may be used in the future to check other repository settings and make the setup process smoother)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contents&lt;/strong&gt;: Read and write permission&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metadata&lt;/strong&gt;: Read-only permission&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pull requests&lt;/strong&gt;: Read and write permission&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Webhooks&lt;/strong&gt;: Read and write permission&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;The Personal Access Token must belong to a user with the &lt;strong&gt;Admin&lt;/strong&gt; role on the repository. GitHub only grants the &lt;strong&gt;Webhooks: Read and write&lt;/strong&gt; permission to repository admins, so tokens created by non-admin users can&amp;rsquo;t manage the webhooks Git Sync relies on for instantaneous updates and pull request previews.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;Refer to &lt;a href=&#34;https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Managing your personal access tokens&lt;/a&gt; for instructions.&lt;/p&gt;
&lt;p&gt;Return to Grafana and fill in the following fields:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Paste your GitHub personal access token into &lt;strong&gt;Enter your access token&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Paste the &lt;strong&gt;Repository URL&lt;/strong&gt; for your GitHub repository into the text box.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Select &lt;strong&gt;Configure repository&lt;/strong&gt; to set up your provisioning folder.&lt;/p&gt;
&lt;h4 id=&#34;connect-with-github-app&#34;&gt;Connect with GitHub App&lt;/h4&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/git-sync-setup/set-up-before/#create-a-github-app&#34;&gt;Create a GitHub App&lt;/a&gt; for instructions on how to create a GitHub App.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;If you want to configure Git Sync for GitHub and authenticate with GitHub App:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If you already have an existing GitHub App connected:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Select &lt;strong&gt;Choose an existing app&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click on the existing connection you want to use, and click on &lt;strong&gt;Configure repository&lt;/strong&gt; to proceed.&lt;/li&gt;
&lt;li&gt;Paste the &lt;strong&gt;Repository URL&lt;/strong&gt; for your GitHub repository into the text box.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you want to connect using a new GitHub App:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Select &lt;strong&gt;Connect to a new app&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Type in the following fields:
&lt;ul&gt;
&lt;li&gt;The ID of the GitHub App you want to use&lt;/li&gt;
&lt;li&gt;The GitHub Installation ID&lt;/li&gt;
&lt;li&gt;The Private Key&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;Configure repository&lt;/strong&gt; to proceed.&lt;/li&gt;
&lt;li&gt;Paste the &lt;strong&gt;Repository URL&lt;/strong&gt; for your GitHub repository into the text box.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that your GitHub App must have the following permissions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Administration&lt;/strong&gt;: Read-only permission (enables validation of branch protection rules against the configured branch when users can push directly to it; may be used in the future to check other repository settings and make the setup process smoother)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contents&lt;/strong&gt;: Read and write permission&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metadata&lt;/strong&gt;: Read-only permission&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pull requests&lt;/strong&gt;: Read and write permission&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Webhooks&lt;/strong&gt;: Read and write permission&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Select &lt;strong&gt;Configure repository&lt;/strong&gt; to set up your provisioning folder.&lt;/p&gt;
&lt;h3 id=&#34;configure-with-gitlab&#34;&gt;Configure with GitLab&lt;/h3&gt;
&lt;p&gt;If you want to configure Git Sync for GitLab, you need a GitLab Personal Access Token. To create one, &lt;a href=&#34;https://gitlab.com/users/sign_in&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;sign in to GitLab&lt;/a&gt; and create a token with these permissions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Repository&lt;/strong&gt;: Read and write permission&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;User&lt;/strong&gt;: Read only permission&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API&lt;/strong&gt;: Read and write permission&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you&amp;rsquo;re using a token from a &lt;strong&gt;service account&lt;/strong&gt;, you need to add the service account to the GitLab project as a member to avoid authentication issues.&lt;/p&gt;
&lt;p&gt;After creating the token, return to Grafana and fill in the following fields:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Paste the token into the &lt;strong&gt;Project Access Token&lt;/strong&gt; text box.&lt;/li&gt;
&lt;li&gt;Paste the &lt;strong&gt;Repository URL&lt;/strong&gt; for your GitLab repository into the text box.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Select &lt;strong&gt;Configure repository&lt;/strong&gt; to set up your provisioning folder.&lt;/p&gt;
&lt;h3 id=&#34;configure-with-bitbucket&#34;&gt;Configure with Bitbucket&lt;/h3&gt;
&lt;p&gt;If you want to configure Git Sync for Bitbucket, you need a Bitbucket API token with scopes. To create one, &lt;a href=&#34;https://id.atlassian.com/login?application=bitbucket&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;sign in to Bitbucket&lt;/a&gt; and create an API token with these permissions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Repositories&lt;/strong&gt;: Read and write permission&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pull requests&lt;/strong&gt;: Read and write permission&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Webhooks&lt;/strong&gt;: Read and write permission&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Return to Grafana and fill in the following fields:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Paste the token into the &lt;strong&gt;API Token&lt;/strong&gt; text box.&lt;/li&gt;
&lt;li&gt;Paste the &lt;strong&gt;Repository URL&lt;/strong&gt; for your GitLab repository into the text box.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Select &lt;strong&gt;Configure repository&lt;/strong&gt; to set up your provisioning folder.&lt;/p&gt;
&lt;h3 id=&#34;configure-with-pure-git&#34;&gt;Configure with Pure Git&lt;/h3&gt;
&lt;p&gt;If you&amp;rsquo;re using another Git provider, you need to use the Pure Git option to configure your connection with a Personal Access Token:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Paste the access token or password of the Git repository you want to sync in &lt;strong&gt;Access Token&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Enter a &lt;strong&gt;Username&lt;/strong&gt;. Git Sync will use this name to access the Git repository.&lt;/li&gt;
&lt;li&gt;Paste the &lt;strong&gt;Repository URL&lt;/strong&gt; of your Git repository into the text box.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Select &lt;strong&gt;Configure repository&lt;/strong&gt; to set up your provisioning folder.&lt;/p&gt;
&lt;h2 id=&#34;configure-the-provisioning-repository&#34;&gt;Configure the provisioning repository&lt;/h2&gt;
&lt;p&gt;After configuring your connection authentication, continue to enter the details of the repository you want to use for provisioning:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Enter a &lt;strong&gt;Branch&lt;/strong&gt; to use for provisioning. The default value is &lt;code&gt;main&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Optionally, you can add a &lt;strong&gt;Path&lt;/strong&gt; to a subdirectory where your dashboards are stored.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Select &lt;strong&gt;Choose what to synchronize&lt;/strong&gt; to have the connection to your repository verified and continue setup.&lt;/p&gt;
&lt;h2 id=&#34;choose-what-to-synchronize&#34;&gt;Choose what to synchronize&lt;/h2&gt;
&lt;p&gt;On this screen, you will sync the external resources you specified in the previous step with your Grafana instance. These provisioned resources will be stored in a new folder in Grafana without affecting the rest of your instance.&lt;/p&gt;
&lt;p&gt;To set up synchronization:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Select the external storage you want to sync with your Grafana instance. The UI provides information about the available resources you can sync.&lt;/li&gt;
&lt;li&gt;Enter a &lt;strong&gt;Display name&lt;/strong&gt; for your repository connection. All the synced resources from this Git Sync connection will appear under the this name in the Grafana UI.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Synchronize with external storage&lt;/strong&gt; to continue.&lt;/li&gt;
&lt;li&gt;You can repeat this process for up to 10 connections.&lt;/li&gt;
&lt;/ol&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;Optionally, you can export any unmanaged resources into the provisioned folder. See how in &lt;a href=&#34;#synchronize-with-external-storage&#34;&gt;Synchronize with external storage&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;Select &lt;strong&gt;Choose additional settings&lt;/strong&gt; to continue setup.&lt;/p&gt;
&lt;h2 id=&#34;synchronize-with-external-storage&#34;&gt;Synchronize with external storage&lt;/h2&gt;
&lt;p&gt;In this screen:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Review the known limitations before proceeding.&lt;/li&gt;
&lt;li&gt;Check the &lt;strong&gt;Migrate existing resources&lt;/strong&gt; box to migrate your unmanaged dashboards to the provisioned folder. If you select this option, all future updates are automatically saved to the synced Git repository and provisioned back to the instance.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Begin synchronization&lt;/strong&gt; to create the Git Sync connection.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After the process is completed, you will see a summary of the synced resources.&lt;/p&gt;
&lt;p&gt;Click &lt;strong&gt;Choose additional settings&lt;/strong&gt; for the final configuration steps.&lt;/p&gt;
&lt;h2 id=&#34;choose-additional-settings&#34;&gt;Choose additional settings&lt;/h2&gt;
&lt;p&gt;In this last step, you can configure the &lt;strong&gt;Sync interval (seconds)&lt;/strong&gt; to indicate how often you want your Grafana instance to pull updates from GitHub. The default value is 300 seconds in Grafana Cloud, and 60 seconds in Grafana OSS/Enterprise.&lt;/p&gt;
&lt;p&gt;You can also select these optional settings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Check &lt;strong&gt;Read only&lt;/strong&gt; to ensure resources can&amp;rsquo;t be modified in Grafana.&lt;/li&gt;
&lt;li&gt;Check &lt;strong&gt;Enable pull request option when saving&lt;/strong&gt; to choose whether to open a pull request when saving changes. If the repository does not allow direct changes to the main branch, a pull request may still be required.&lt;/li&gt;
&lt;li&gt;Check &lt;strong&gt;Enable push to configured branch&lt;/strong&gt; to allow direct commits to the configured branch.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Select &lt;strong&gt;Finish&lt;/strong&gt; to complete the setup.&lt;/p&gt;
&lt;h2 id=&#34;verify-your-dashboards-in-grafana&#34;&gt;Verify your dashboards in Grafana&lt;/h2&gt;
&lt;p&gt;To verify that your dashboards are available at the location that you specified, go to &lt;strong&gt;Dashboards&lt;/strong&gt;. The name of the dashboard is listed in the &lt;strong&gt;Name&lt;/strong&gt; column.&lt;/p&gt;
&lt;p&gt;Now that your dashboards have been synced from a repository, you can customize the name, change the branch, and create a pull request (PR) for it. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/provision-resources/use-git-sync/&#34;&gt;Manage provisioned repositories with Git Sync&lt;/a&gt; for more information.&lt;/p&gt;
&lt;h2 id=&#34;update-or-delete-your-synced-resources&#34;&gt;Update or delete your synced resources&lt;/h2&gt;
&lt;p&gt;To update or delete your repository configuration after you&amp;rsquo;ve completed setup:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Log in to your Grafana server with an account that has the Grafana Admin flag set.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Administration &amp;gt; General &amp;gt; Provisioning&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Go to the &lt;strong&gt;Repositories&lt;/strong&gt; tab, and locate the repository you want to modify.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Settings&lt;/strong&gt; to access the &lt;strong&gt;Configure repository&lt;/strong&gt; screen:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;To modify your configuration, update any of the settings and select &lt;strong&gt;Save&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;To delete the repository, click &lt;strong&gt;Delete&lt;/strong&gt;. You can either keep the synced resources or delete them.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;p&gt;You&amp;rsquo;ve successfully set up Git Sync to manage your Grafana dashboards through version control. Your dashboards are now synchronized with a GitHub repository, enabling collaborative development and change tracking.&lt;/p&gt;
&lt;p&gt;To learn more about using Git Sync refer to the following documents:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/git-sync-setup/set-up-extend/&#34;&gt;Set up instantaneous pulling and dashboard previews in Pull Requests&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/provision-resources/use-git-sync/&#34;&gt;Work with provisioned repositories with Git Sync&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/provision-resources/provisioned-dashboards/&#34;&gt;Work with provisioned dashboards&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/provision-resources/git-sync-deployment-scenarios/&#34;&gt;Git Sync deployment scenarios&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/provision-resources/export-resources/&#34;&gt;Export resources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="set-up-git-sync">Set up Git Sync&lt;/h1>
&lt;div class="admonition admonition-note">&lt;blockquote>&lt;p class="title text-uppercase">Note&lt;/p>&lt;p>&lt;strong>Git Sync is now GA for Grafana Cloud, OSS and Enterprise.&lt;/strong> Refer to
&lt;a href="/docs/grafana/v13.0/as-code/observability-as-code/git-sync/usage-limits/">Usage and performance limitations&lt;/a> to understand usage limits for the different tiers.&lt;/p></description></item><item><title>Add non-provisioned resources from Grafana</title><link>https://grafana.com/docs/grafana/v13.0/as-code/observability-as-code/git-sync/export-resources/</link><pubDate>Thu, 23 Apr 2026 11:39:03 +0000</pubDate><guid>https://grafana.com/docs/grafana/v13.0/as-code/observability-as-code/git-sync/export-resources/</guid><content><![CDATA[&lt;h1 id=&#34;export-non-provisioned-resources-from-grafana&#34;&gt;Export non-provisioned resources from Grafana&lt;/h1&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Git Sync is now GA for Grafana Cloud, OSS and Enterprise.&lt;/strong&gt; Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/usage-limits/&#34;&gt;Usage and performance limitations&lt;/a&gt; to understand usage limits for the different tiers.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;/help/&#34;&gt;Contact Grafana&lt;/a&gt; for support or to report any issues you encounter and help us improve this feature.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;Traditional operations such as moving or copying a dashboard to a provisioned folder or bulk export are gradually being incorporated into Git Sync. In the meantime the following options are available:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#add-an-existing-dashboard-from-the-grafana-ui&#34;&gt;Export an existing dashboard from the Grafana UI as a copy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#add-a-dashboard-with-grafana-cli&#34;&gt;Export the dashboard with Grafana CLI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#add-a-dashboard-via-json-export&#34;&gt;Copy the dashboard as JSON and commit to the repository&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;add-an-existing-dashboard-from-the-grafana-ui&#34;&gt;Add an existing dashboard from the Grafana UI&lt;/h2&gt;
&lt;p&gt;You can save a copy of dashboard directly from the Grafana UI to your provisioned folder.&lt;/p&gt;
&lt;p&gt;To do so, follow these steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Make sure the dashboard is in &lt;strong&gt;Editable&lt;/strong&gt; mode.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Save&lt;/strong&gt; or &lt;strong&gt;Save as&lt;/strong&gt; from the top-right corner.&lt;/li&gt;
&lt;li&gt;In the menu:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Target folder&lt;/strong&gt;: Select the provisioned folder from your Grafana UI where you want to save the dashboard in.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Branch&lt;/strong&gt;: Type in the name of the branch of the provisioned repository you want to work in, or create a new branch. Committing directly to &lt;code&gt;main&lt;/code&gt; is not supported.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Folder&lt;/strong&gt;: Type in the folder in your sync repository, if any.&lt;/li&gt;
&lt;li&gt;Fill in the rest of the fields accordingly.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Save&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In your synced GitHub repository, merge the branch with the dashboard you want to sync.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;add-a-dashboard-with-grafana-cli&#34;&gt;Add a dashboard with Grafana CLI&lt;/h2&gt;
&lt;p&gt;You can also export an existing dashboard with &lt;code&gt;gcx&lt;/code&gt;, the 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/grafana-cli/&#34;&gt;Grafana CLI&lt;/a&gt;. Use &lt;code&gt;gcx&lt;/code&gt; to download the resources you want to sync from Grafana, and then commit and push those files to your provisioned Git repository. Git Sync will then detect the commit, and synchronize with Grafana.&lt;/p&gt;
&lt;p&gt;To do so, follow these steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Set up the &lt;code&gt;gcx&lt;/code&gt; context to point to your instance as documented in &lt;a href=&#34;https://github.com/grafana/gcx/#1-authenticate&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Defining contexts&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Pull the resources you want to sync from the instance to your local repository:&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;gcx resources pull dashboards --path &amp;lt;REPO_PATH&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Next, commit and push the resources to your Git repository:&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;git add &amp;lt;DASHBOARDS_PATH&amp;gt;
git commit -m &amp;#34;Add dashboards from Grafana&amp;#34;
git push&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Where:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&amp;lt;GIT_REPO&amp;gt;&lt;/em&gt;: The path to the repository synced with Git Sync&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&amp;lt;DASHBOARDS_PATH&amp;gt;&lt;/em&gt;: The path where the dashboards you want to export are located. The dashboards path must be under the repository&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See more at &lt;a href=&#34;https://grafana.github.io/grafanactl/guides/manage-resources/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Manage resources with Grafana CLI&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;add-a-dashboard-via-json-export&#34;&gt;Add a dashboard via JSON export&lt;/h2&gt;
&lt;p&gt;To add an existing dashboard to Git Sync via JSON export, you need to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Export the dashboard as JSON.&lt;/li&gt;
&lt;li&gt;Convert it to the Custom Resource Definition (CRD) format required by the Grafana App Platform.&lt;/li&gt;
&lt;li&gt;Commit the converted file to your Git repository.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;required-json-format&#34;&gt;Required JSON format&lt;/h3&gt;
&lt;p&gt;To export a dashboard as a JSON file it must follow this CRD structure:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;{
  &amp;#39;apiVersion&amp;#39;: &amp;#39;dashboard.grafana.app/v1&amp;#39;,
  &amp;#39;kind&amp;#39;: &amp;#39;Dashboard&amp;#39;,
  &amp;#39;metadata&amp;#39;: { &amp;#39;name&amp;#39;: &amp;#39;dcf2lve9akj8xsd&amp;#39; },
  &amp;#39;spec&amp;#39;: { /* Original dashboard JSON goes here */ },
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The structure includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;apiVersion&lt;/code&gt;: Specifies the API version (currently &lt;code&gt;v1&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kind&lt;/code&gt;: Identifies the resource type (Dashboard)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;metadata&lt;/code&gt;: Contains the dashboard identifier &lt;code&gt;uid&lt;/code&gt;. You can find the identifier in the dahsboard&amp;rsquo;s URL or in the exported JSON&lt;/li&gt;
&lt;li&gt;&lt;code&gt;spec&lt;/code&gt;: Wraps your original dashboard JSON&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;work-with-git-managed-dashboards&#34;&gt;Work with Git-managed dashboards&lt;/h2&gt;
&lt;p&gt;After you&amp;rsquo;ve saved a dashboard in Git, it&amp;rsquo;ll be synchronized automatically, and you&amp;rsquo;ll be able to work with it as any other provisioned resource. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/provision-resources/provisioned-dashboards/&#34;&gt;Work with provisioned dashboards&lt;/a&gt; for more information.&lt;/p&gt;
]]></content><description>&lt;h1 id="export-non-provisioned-resources-from-grafana">Export non-provisioned resources from Grafana&lt;/h1>
&lt;div class="admonition admonition-note">&lt;blockquote>&lt;p class="title text-uppercase">Note&lt;/p>&lt;p>&lt;strong>Git Sync is now GA for Grafana Cloud, OSS and Enterprise.&lt;/strong> Refer to
&lt;a href="/docs/grafana/v13.0/as-code/observability-as-code/git-sync/usage-limits/">Usage and performance limitations&lt;/a> to understand usage limits for the different tiers.&lt;/p></description></item><item><title>Work with provisioned repositories in Git Sync</title><link>https://grafana.com/docs/grafana/v13.0/as-code/observability-as-code/git-sync/use-git-sync/</link><pubDate>Wed, 13 May 2026 11:49:28 +0000</pubDate><guid>https://grafana.com/docs/grafana/v13.0/as-code/observability-as-code/git-sync/use-git-sync/</guid><content><![CDATA[&lt;h1 id=&#34;work-with-provisioned-repositories-in-git-sync&#34;&gt;Work with provisioned repositories in Git Sync&lt;/h1&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Git Sync is now GA for Grafana Cloud, OSS and Enterprise.&lt;/strong&gt; Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/usage-limits/&#34;&gt;Usage and performance limitations&lt;/a&gt; to understand usage limits for the different tiers.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;/help/&#34;&gt;Contact Grafana&lt;/a&gt; for support or to report any issues you encounter and help us improve this feature.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;After you sync your resources, Git Sync creates a dashboard that provides a summary of resources, health, pull status, webhook, sync jobs, resources, and files. To access it, follow these steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Log in to your Grafana server with an account that has the Grafana Admin flag set.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Administration &amp;gt; General &amp;gt; Provisioning&lt;/strong&gt; in the left-side menu to access the Git Sync configuration screen.&lt;/li&gt;
&lt;li&gt;Go to the &lt;strong&gt;Repositories&lt;/strong&gt; tab, and locate the repository you want to work with. You can view the current status of the sync, run pulls, or update your settings.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/provisioned-dashboards/&#34;&gt;Work with provisioned dashboards&lt;/a&gt; for more information about working with provisioned files.&lt;/p&gt;
&lt;h2 id=&#34;view-the-current-status-of-synchronization&#34;&gt;View the current status of synchronization&lt;/h2&gt;
&lt;p&gt;Use the &lt;strong&gt;View&lt;/strong&gt; section to see detailed information about the current status of your sync and &lt;a href=&#34;#troubleshoot-synchronization&#34;&gt;troubleshoot&lt;/a&gt; possible issues:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The &lt;strong&gt;Overview&lt;/strong&gt; tab contains information about the health of your repository&amp;rsquo;s connection with Grafana, configuration options such as webhooks, or information on Git processes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;strong&gt;Resources&lt;/strong&gt; tab lists the provisioned resources of the connection.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;troubleshoot-synchronization&#34;&gt;Troubleshoot synchronization&lt;/h3&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;Before you proceed to troubleshoot, understand the 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/usage-limits/&#34;&gt;Usage and performance known limitations&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;Monitor the &lt;strong&gt;View&lt;/strong&gt; status page for synchronization issues and status updates. The status page displays the following events:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sync started:&lt;/strong&gt; The synchronization process has begun.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sync completed:&lt;/strong&gt; The synchronization process finished successfully.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sync failed:&lt;/strong&gt; The synchronization process failed. Refer to the error details for troubleshooting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sync issues:&lt;/strong&gt; The synchronization process encountered issues.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Dashboard sync errors&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Repository URL:&lt;/strong&gt; If dashboards don&amp;rsquo;t sync, verify that the repository URL is correct and accessible from the Grafana instance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Repository branch:&lt;/strong&gt; Verify that the configured repository branch exists and is correctly referenced.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conflicts:&lt;/strong&gt; Check for conflicts in the repository that may prevent syncing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Dashboard import errors&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Validate the JSON format of the dashboard files before importing.&lt;/li&gt;
&lt;li&gt;If the import fails, check Grafana logs for error messages and troubleshoot accordingly.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;synchronize-changes&#34;&gt;Synchronize changes&lt;/h2&gt;
&lt;p&gt;To sync resources between the provisioned repositories and your Grafana instance, click &lt;strong&gt;Pull&lt;/strong&gt; under the repository you want to sync. The synchronization process runs and completes.&lt;/p&gt;
&lt;p&gt;Grafana overwrites existing dashboards with the same &lt;code&gt;uid&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;update-or-delete-your-settings&#34;&gt;Update or delete your settings&lt;/h2&gt;
&lt;p&gt;To update or delete your repository configuration after you complete setup:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Log in to your Grafana server with an account that has the Grafana Admin flag set.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Administration &amp;gt; General &amp;gt; Provisioning&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Go to the &lt;strong&gt;Repositories&lt;/strong&gt; tab, and locate the repository you want to modify.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Settings&lt;/strong&gt; to access the &lt;strong&gt;Configure repository&lt;/strong&gt; screen:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;To modify your configuration, update any of the settings and select &lt;strong&gt;Save&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;To delete the repository, click &lt;strong&gt;Delete&lt;/strong&gt;. You can either keep the synced resources or delete them.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;manage-folder-permissions&#34;&gt;Manage folder permissions&lt;/h2&gt;
&lt;p&gt;By default, users keep their roles in folders provisioned with Git Sync.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Grafana Role&lt;/th&gt;
              &lt;th&gt;Folder Permission&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;Admin&lt;/td&gt;
              &lt;td&gt;Admin&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Editor&lt;/td&gt;
              &lt;td&gt;Editor&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Viewer&lt;/td&gt;
              &lt;td&gt;Viewer&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/permissions-grafana/&#34;&gt;Git Sync permissions&lt;/a&gt; to understand and set up permissions in Git Sync.&lt;/p&gt;
&lt;h3 id=&#34;modify-folder-permissions&#34;&gt;Modify folder permissions&lt;/h3&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;To modify permissions, each provisioned folder must include the &lt;code&gt;_folder.json&lt;/code&gt; metadata file with the folder&amp;rsquo;s UID, which defines a stable folder ID used to set folder permissions. Without it, the folder&amp;rsquo;s permissions will be lost if you move that folder to a different path in the Git repository.&lt;/p&gt;
&lt;p&gt;For new provisioned folders managed with Git Sync, the metadata file is added automatically if you created the folder from the Grafana UI. If your folder is missing the metadata file, you&amp;rsquo;ll see a warning in the UI with instructions on how to add the missing metadata.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;You can modify folder permissions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;From the UI, refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/administration/user-management/manage-dashboard-permissions/&#34;&gt;Manage dashboard permissions&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Using the API, refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/developer-resources/api-reference/http-api/dashboard_permissions/&#34;&gt;Dashboard Permissions API&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;the-git-sync-folder-json-metadata-file&#34;&gt;The Git Sync folder JSON metadata file&lt;/h3&gt;
&lt;p&gt;Each folder in a synced repository contains a &lt;code&gt;.folder.json&lt;/code&gt; file at its root:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;apiVersion&amp;#34;: &amp;#34;folder.grafana.app/v1beta1&amp;#34;,
  &amp;#34;kind&amp;#34;: &amp;#34;Folder&amp;#34;,
  &amp;#34;metadata&amp;#34;: {
    &amp;#34;name&amp;#34;: &amp;#34;&amp;lt;FOLDER_UID&amp;gt;&amp;#34;
  },
  &amp;#34;spec&amp;#34;: {
    &amp;#34;title&amp;#34;: &amp;#34;&amp;lt;FOLDER_UI_NAME&amp;gt;&amp;#34;
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Where:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;FOLDER_UID&amp;gt;&lt;/code&gt; is the stable folder UID that Grafana uses for permissions, bookmarks, and API references.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;FOLDER_UI_NAME&amp;gt;&lt;/code&gt; is the display name shown in the Grafana UI. This parameter is optional. If not used, the folder name will be passed instead.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="work-with-provisioned-repositories-in-git-sync">Work with provisioned repositories in Git Sync&lt;/h1>
&lt;div class="admonition admonition-note">&lt;blockquote>&lt;p class="title text-uppercase">Note&lt;/p>&lt;p>&lt;strong>Git Sync is now GA for Grafana Cloud, OSS and Enterprise.&lt;/strong> Refer to
&lt;a href="/docs/grafana/v13.0/as-code/observability-as-code/git-sync/usage-limits/">Usage and performance limitations&lt;/a> to understand usage limits for the different tiers.&lt;/p></description></item><item><title>Work with provisioned dashboards in Git Sync</title><link>https://grafana.com/docs/grafana/v13.0/as-code/observability-as-code/git-sync/provisioned-dashboards/</link><pubDate>Thu, 23 Apr 2026 11:39:03 +0000</pubDate><guid>https://grafana.com/docs/grafana/v13.0/as-code/observability-as-code/git-sync/provisioned-dashboards/</guid><content><![CDATA[&lt;h1 id=&#34;work-with-provisioned-dashboards-in-git-sync&#34;&gt;Work with provisioned dashboards in Git Sync&lt;/h1&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Git Sync is now GA for Grafana Cloud, OSS and Enterprise.&lt;/strong&gt; Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/usage-limits/&#34;&gt;Usage and performance limitations&lt;/a&gt; to understand usage limits for the different tiers.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;/help/&#34;&gt;Contact Grafana&lt;/a&gt; for support or to report any issues you encounter and help us improve this feature.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;Using provisioning, you can choose to store your dashboard JSON files in either GitHub repositories using Git Sync or a local path, and manage them through the Grafana interface. Dashboards and folders synchronized using Git Sync or a local path are referred to as &lt;em&gt;provisioned&lt;/em&gt; resources. For more information, refer to the 
    &lt;a href=&#34;/docs/grafana/v13.0/dashboards/&#34;&gt;Dashboards&lt;/a&gt; documentation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Git Sync&lt;/strong&gt; is the recommended method for provisioning your dashboards. You can synchronize any new dashboards and changes to existing dashboards to your configured GitHub repository. If you push a change in the repository, those changes are mirrored in your Grafana instance. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/provision-resources/file-path-setup/&#34;&gt;Set up file provisioning&lt;/a&gt; to learn more about the version of local file provisioning in Grafana 12.&lt;/p&gt;
&lt;h2 id=&#34;manage-dashboards-provisioned-with-git-sync&#34;&gt;Manage dashboards provisioned with Git Sync&lt;/h2&gt;
&lt;p&gt;Using Git Sync, you can manage your dashboards in the UI and synchronize them with a GitHub repository. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/#how-it-works&#34;&gt;How it works&lt;/a&gt; for more details.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dashboards saved in your repository or local folder configured with Git Sync appear in a provisioned folder in Grafana.&lt;/li&gt;
&lt;li&gt;Any dashboard folders saved with Git Sync have a &lt;strong&gt;Provisioned&lt;/strong&gt; label in the UI.&lt;/li&gt;
&lt;li&gt;To save any changes to provisioned resources, open a pull request or commit directly to an existing branch, such as the &lt;code&gt;main&lt;/code&gt; branch.
&lt;ul&gt;
&lt;li&gt;Use pull requests to review changes to dashboards.&lt;/li&gt;
&lt;li&gt;Preview the changes before merging.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To learn more about Git, refer to &lt;a href=&#34;https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Getting Started - About Version Control&lt;/a&gt; of the &lt;a href=&#34;https://git-scm.com/book/en/v2&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Pro Git book&lt;/a&gt; in the official Git documentation.&lt;/p&gt;
&lt;h3 id=&#34;create-a-new-dashboard&#34;&gt;Create a new dashboard&lt;/h3&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;If you want to add an existing dashboard to your provisioned resources, refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/provision-resources/export-resources/&#34;&gt;Export non-provisioned resources from Grafana&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;You have two options for creating &lt;strong&gt;new&lt;/strong&gt; dashboards or folders in Git Sync:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create them directly within Git Sync-managed folders in the Grafana UI&lt;/li&gt;
&lt;li&gt;Add them by committing JSON files to your Git repository&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When you create a new dashboard in a provisioned folder associated with a GitHub repository, you follow the same process you use for any new dashboard. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/dashboards/build-dashboards/create-dashboard/&#34;&gt;Create a dashboard&lt;/a&gt; for more information.&lt;/p&gt;
&lt;p&gt;After you create the dashboard, follow these steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Select &lt;strong&gt;Save&lt;/strong&gt; to preserve the new dashboard.&lt;/li&gt;
&lt;li&gt;Enter a title for the dashboard and a description.&lt;/li&gt;
&lt;li&gt;Select the provisioned folder from the &lt;strong&gt;Folder&lt;/strong&gt; drop-down list.&lt;/li&gt;
&lt;li&gt;In &lt;strong&gt;Path&lt;/strong&gt;, provide the path for your repository, ending in a JSON or YAML file.&lt;/li&gt;
&lt;li&gt;For &lt;strong&gt;Workflow&lt;/strong&gt;, select &lt;strong&gt;Push to main&lt;/strong&gt; to make a Git commit directly to the repository or &lt;strong&gt;Push to a new branch&lt;/strong&gt; to create a pull request.
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Branch&lt;/strong&gt;: Specify the branch name in GitHub (for example, main). This option only appears if you select &lt;strong&gt;Push to a new branch&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Save&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;edit-dashboards&#34;&gt;Edit dashboards&lt;/h3&gt;
&lt;p&gt;When you edit a provisioned resource, you&amp;rsquo;re prompted to save or discard those changes. Saving changes requires opening a pull request in your GitHub repository.&lt;/p&gt;
&lt;p&gt;To save dashboard changes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Select &lt;strong&gt;Edit&lt;/strong&gt; to update a provisioned dashboard. Make your desired changes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;strong&gt;Save dashboard&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;On the &lt;strong&gt;Provisioned dashboard&lt;/strong&gt; panel, choose the options you want to use:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Update default refresh value&lt;/strong&gt;: Check this box to make the current refresh the new default&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Update default variable values&lt;/strong&gt;: Check this box to make the current values the new default&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Path&lt;/strong&gt;: Provide the path for your repository, ending in a JSON or YAML file&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Workflow:&lt;/strong&gt; Select &lt;strong&gt;Push to main&lt;/strong&gt; to make a Git commit directly to the repository or &lt;strong&gt;Push to a new branch&lt;/strong&gt; to create a pull request&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Branch&lt;/strong&gt;: Specify the branch name in GitHub (for example, main). This option only appears if you select &lt;strong&gt;Push to a new branch&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comment&lt;/strong&gt;: Add a comment describing your changes&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Optional: Select the &lt;strong&gt;Changes&lt;/strong&gt; tab to view the differences between the updates you made and the original resource.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select &lt;strong&gt;Save&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you chose &lt;strong&gt;Push to a new branch&lt;/strong&gt;, select &lt;strong&gt;Open a pull request in GitHub&lt;/strong&gt; to open a new PR to your repository. GitHub opens with your dashboard&amp;rsquo;s code as the contents of the PR.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Follow your usual GitHub workflow to save and merge the PR to your repository.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;remove-dashboards&#34;&gt;Remove dashboards&lt;/h3&gt;
&lt;p&gt;You can remove a provisioned dashboard by deleting the dashboard from the repository. The Grafana UI updates when the changes from the GitHub repository sync.&lt;/p&gt;
&lt;p&gt;To restore a deleted dashboard, raise a PR directly in your GitHub repository. Restoring resources from the UI isn&amp;rsquo;t possible at the moment.&lt;/p&gt;
&lt;h2 id=&#34;best-practices&#34;&gt;Best practices&lt;/h2&gt;
&lt;p&gt;Follow these recommendations when working with provisioned dashboards:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Use GitHub pull requests for changes&lt;/strong&gt;: Maintain review processes for dashboard modifications&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Provide clear commit messages&lt;/strong&gt;: Describe your changes to help with tracking and collaboration&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Regularly sync your repository&lt;/strong&gt;: Keep Grafana up to date with the latest changes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Review the Events tab&lt;/strong&gt;: Monitor sync status to ensure changes are applied correctly&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="work-with-provisioned-dashboards-in-git-sync">Work with provisioned dashboards in Git Sync&lt;/h1>
&lt;div class="admonition admonition-note">&lt;blockquote>&lt;p class="title text-uppercase">Note&lt;/p>&lt;p>&lt;strong>Git Sync is now GA for Grafana Cloud, OSS and Enterprise.&lt;/strong> Refer to
&lt;a href="/docs/grafana/v13.0/as-code/observability-as-code/git-sync/usage-limits/">Usage and performance limitations&lt;/a> to understand usage limits for the different tiers.&lt;/p></description></item><item><title>Git Sync permissions and access control</title><link>https://grafana.com/docs/grafana/v13.0/as-code/observability-as-code/git-sync/permissions-grafana/</link><pubDate>Wed, 13 May 2026 11:49:28 +0000</pubDate><guid>https://grafana.com/docs/grafana/v13.0/as-code/observability-as-code/git-sync/permissions-grafana/</guid><content><![CDATA[&lt;h1 id=&#34;git-sync-permissions-and-access-control&#34;&gt;Git Sync permissions and access control&lt;/h1&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Git Sync is now GA for Grafana Cloud, OSS and Enterprise.&lt;/strong&gt; Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/usage-limits/&#34;&gt;Usage and performance limitations&lt;/a&gt; to understand usage limits for the different tiers.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;/help/&#34;&gt;Contact Grafana&lt;/a&gt; for support or to report any issues you encounter and help us improve this feature.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;For Git Sync you need to configure permissions at two layers to function correctly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;At the Grafana level for repository management and resource access, as described in this document.&lt;/li&gt;
&lt;li&gt;At your Git provider level, to protect your repository. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/gitsync-repo-protection/&#34;&gt;Repository protection for Git Sync&lt;/a&gt; for more information.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;grafana-role-based-permissions&#34;&gt;Grafana role-based permissions&lt;/h2&gt;
&lt;p&gt;Git Sync integrates with the Grafana standard role-based permission model, which has three levels:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Organization-level:&lt;/strong&gt; Default permissions of the &lt;code&gt;Admin&lt;/code&gt;, &lt;code&gt;Editor&lt;/code&gt;, or &lt;code&gt;Viewer&lt;/code&gt; role. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/administration/roles-and-permissions/&#34;&gt;Roles and permissions&lt;/a&gt; for more details.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Folder-level:&lt;/strong&gt; They also apply to all dashboards within it. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/dashboards/organize-dashboards/manage-folders/#manage-folder-permissions&#34;&gt;Folder permissions&lt;/a&gt; for more details.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dashboard-level:&lt;/strong&gt; Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/dashboards/manage-dashboards/#manage-dashboard-permissions&#34;&gt;Dashboard permissions&lt;/a&gt; for more details.&lt;/li&gt;
&lt;/ol&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;Dashboard-level permissions override folder-level permissions, which override organization-level roles.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;The following applies for Git Sync:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Permissions don&amp;rsquo;t sync&lt;/strong&gt;: Folder and dashboard permissions are managed in Grafana only and don&amp;rsquo;t sync to Git. You must configure permissions separately in each Grafana instance that uses the repository&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dashboard changes&lt;/strong&gt;: When users with appropriate dashboard or folder permissions modify dashboard content, those changes automatically sync to Git, or create pull requests if branch protection is enabled&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Folder structure&lt;/strong&gt;: Creating, renaming, or deleting folders syncs to Git&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;use-org-level-permissions-in-git-sync&#34;&gt;Use org-level permissions in Git Sync&lt;/h2&gt;
&lt;p&gt;If you apply org-level permissions, users can do the following with Git Sync:&lt;/p&gt;
&lt;h3 id=&#34;admin-users&#34;&gt;Admin users&lt;/h3&gt;
&lt;p&gt;Users with the &lt;code&gt;Admin&lt;/code&gt; role can set up and manage Git Sync repositories and connections.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;In Grafana Cloud, the equivalent role is &lt;strong&gt;Grafana Cloud Admin&lt;/strong&gt; or &lt;strong&gt;Admin&lt;/strong&gt; at the organization level.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Capabilities&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configure new Git Sync repositories and connections&lt;/li&gt;
&lt;li&gt;Update repository settings (URL, branch, path, sync interval, webhook configuration)&lt;/li&gt;
&lt;li&gt;Delete repository connections&lt;/li&gt;
&lt;li&gt;Manage authentication credentials and Git provider connections&lt;/li&gt;
&lt;li&gt;Manually trigger sync operations (pull from Git)&lt;/li&gt;
&lt;li&gt;View sync status, logs, and statistics&lt;/li&gt;
&lt;li&gt;Access the Provisioning admin UI at &lt;strong&gt;Administration &amp;gt; General &amp;gt; Provisioning&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;viewer-users&#34;&gt;Viewer users&lt;/h3&gt;
&lt;p&gt;Users with the &lt;code&gt;Viewer&lt;/code&gt; role can view provisioned resources. Their access to specific dashboards and folders depends on the permissions assigned to them.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Organization-level capabilities&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Read Git Sync settings, via the &lt;code&gt;provisioning.settings:read&lt;/code&gt; permission&lt;/li&gt;
&lt;li&gt;View dashboard preview links in pull requests&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Resource access&lt;/strong&gt; depends on folder and dashboard permissions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Folder Viewer&lt;/strong&gt;: View all dashboards and subfolders within that folder&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dashboard Viewer&lt;/strong&gt;: View specific dashboards (even if they don&amp;rsquo;t have folder access)&lt;/li&gt;
&lt;li&gt;Cannot edit dashboards or manage Git Sync repositories&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;editor-users&#34;&gt;Editor users&lt;/h3&gt;
&lt;p&gt;Users with the &lt;code&gt;Editor&lt;/code&gt; role can work with provisioned dashboards and folders. Their specific capabilities depend on the folder-level and dashboard-level permissions assigned to them.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Organization-level capabilities&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;View dashboard preview links in pull requests&lt;/li&gt;
&lt;li&gt;Trigger manual sync operations via jobs API&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Resource access&lt;/strong&gt; depends on folder/dashboard permissions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Folder Editor or Admin&lt;/strong&gt;: Create, edit, and delete dashboards within the folder; create subfolders; changes sync to Git&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Folder Viewer&lt;/strong&gt;: View dashboards only within that folder&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dashboard Editor or Admin&lt;/strong&gt;: Edit specific dashboards; changes sync to Git (even without folder edit access)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dashboard Viewer&lt;/strong&gt;: View specific dashboards only&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Editors don&amp;rsquo;t need access to the Provisioning admin UI or repository configuration. Refer to &lt;a href=&#34;#configure-folder-and-dashboard-permissions&#34;&gt;Configure folder and dashboard permissions&lt;/a&gt; and &lt;a href=&#34;#configure-fine-grained-access-control-rbac&#34;&gt;Configure fine-grained access control (RBAC)&lt;/a&gt; for details.&lt;/p&gt;
&lt;h2 id=&#34;configure-folder-and-dashboard-permissions&#34;&gt;Configure folder and dashboard permissions&lt;/h2&gt;
&lt;p&gt;Folder-level role permissions determine who can view, edit, or delete provisioned resources.&lt;/p&gt;
&lt;p&gt;These roles grant Grafana permissions (&lt;code&gt;dashboards:read&lt;/code&gt;, &lt;code&gt;dashboards:write&lt;/code&gt;, &lt;code&gt;folders:create&lt;/code&gt;&amp;hellip;) that are checked when users interact with provisioned resources through the Git Sync files endpoint. Dashboards within a provisioned folder inherit the folder&amp;rsquo;s permissions.&lt;/p&gt;
&lt;p&gt;When Git Sync creates a provisioned folder, it assigns these default permissions:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Grafana Role&lt;/th&gt;
              &lt;th&gt;Folder Permission&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;Admin&lt;/td&gt;
              &lt;td&gt;Admin&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Editor&lt;/td&gt;
              &lt;td&gt;Editor&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Viewer&lt;/td&gt;
              &lt;td&gt;Viewer&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;&lt;strong&gt;Folder-level &lt;code&gt;Viewer&lt;/code&gt; users&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;View dashboards and folders&lt;/li&gt;
&lt;li&gt;Cannot create, edit, or delete resources&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Folder-level &lt;code&gt;Editor&lt;/code&gt; users&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Have all &lt;code&gt;Viewer&lt;/code&gt; permissions&lt;/li&gt;
&lt;li&gt;Create, edit and delete dashboards&lt;/li&gt;
&lt;li&gt;Create subfolders&lt;/li&gt;
&lt;li&gt;When an &lt;code&gt;Editor&lt;/code&gt; saves dashboard changes, Git Sync automatically commits the changes to Git, or creates a pull request if branch protection is enabled&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Folder-level &lt;code&gt;Admin&lt;/code&gt; users&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Have all &lt;code&gt;Editor&lt;/code&gt; permissions&lt;/li&gt;
&lt;li&gt;Update folder settings, rename and delete folders&lt;/li&gt;
&lt;li&gt;Modify folder permissions&lt;/li&gt;
&lt;li&gt;Full control over the folder and all its contents&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;modify-folder-level-permissions&#34;&gt;Modify folder-level permissions&lt;/h3&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;To safely modify permissions, each provisioned folder should include a &lt;code&gt;.folder.json&lt;/code&gt; metadata file with the folder&amp;rsquo;s UID. Without this file, folder permissions may be lost if the folder is moved to a different path in the Git repository.&lt;/p&gt;
&lt;p&gt;For folders created from the Grafana UI, the metadata file is added automatically. If your folder is missing the metadata file, the UI shows a warning with instructions on how to add it.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;You can customize folder permissions using:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Grafana UI&lt;/strong&gt;: Navigate to the folder, click the settings icon, and select &lt;strong&gt;Permissions&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RBAC (Enterprise/Cloud)&lt;/strong&gt;: Use 
    &lt;a href=&#34;/docs/grafana/v13.0/administration/roles-and-permissions/access-control/&#34;&gt;Role-Based Access Control&lt;/a&gt; for fine-grained permission management&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;configure-fine-grained-access-control-rbac&#34;&gt;Configure fine-grained access control (RBAC)&lt;/h2&gt;
&lt;p&gt;If you&amp;rsquo;re a Grafana Enterprise or Grafana Cloud user with RBAC enabled, Git Sync provides fine-grained permissions that allow more granular control over Git Sync operations. You can create custom roles that combine Git Sync permissions in different ways. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/administration/roles-and-permissions/access-control/&#34;&gt;Role-Based Access Control&lt;/a&gt; documentation for instructions on creating and managing custom roles.&lt;/p&gt;
&lt;h3 id=&#34;how-basic-roles-map-to-rbac-permissions&#34;&gt;How basic roles map to RBAC permissions&lt;/h3&gt;
&lt;p&gt;Understanding which permissions each basic role receives helps you create custom roles or understand exactly what access users have. The tables below show which Git Sync permissions are granted to each role by default.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;The &lt;code&gt;provisioning.settings:read&lt;/code&gt; permission is granted to all roles (Viewer and above) and allows viewing Git Sync system settings, which is necessary for the UI to display properly. This does not grant access to modify settings or manage repositories.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h4 id=&#34;admin-role&#34;&gt;Admin role&lt;/h4&gt;
&lt;p&gt;Users with the &lt;code&gt;Admin&lt;/code&gt; role receive full access to Git Sync infrastructure:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Permission Category&lt;/th&gt;
              &lt;th&gt;Specific Permissions&lt;/th&gt;
              &lt;th&gt;What This Allows&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Repositories&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;provisioning.repositories:create&lt;/code&gt;&lt;br&gt;&lt;code&gt;provisioning.repositories:read&lt;/code&gt;&lt;br&gt;&lt;code&gt;provisioning.repositories:write&lt;/code&gt;&lt;br&gt;&lt;code&gt;provisioning.repositories:delete&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Create new repositories&lt;br&gt;View repository configurations&lt;br&gt;Update repository settings (branch, path, interval)&lt;br&gt;Delete repositories&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Connections&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;provisioning.connections:create&lt;/code&gt;&lt;br&gt;&lt;code&gt;provisioning.connections:read&lt;/code&gt;&lt;br&gt;&lt;code&gt;provisioning.connections:write&lt;/code&gt;&lt;br&gt;&lt;code&gt;provisioning.connections:delete&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Create Git provider connections&lt;br&gt;View connection details&lt;br&gt;Update connection settings&lt;br&gt;Delete connections&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Jobs&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;provisioning.jobs:create&lt;/code&gt;&lt;br&gt;&lt;code&gt;provisioning.jobs:read&lt;/code&gt;&lt;br&gt;&lt;code&gt;provisioning.jobs:write&lt;/code&gt;&lt;br&gt;&lt;code&gt;provisioning.jobs:delete&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Trigger manual syncs&lt;br&gt;View sync jobs&lt;br&gt;Modify sync job settings&lt;br&gt;Cancel/delete sync jobs&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;History &amp;amp; Monitoring&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;provisioning.historicjobs:read&lt;/code&gt;&lt;br&gt;&lt;code&gt;provisioning.stats:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;View sync job history&lt;br&gt;View Git Sync statistics and metrics&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Settings&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;provisioning.settings:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;View Git Sync system settings&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h4 id=&#34;editor-role&#34;&gt;Editor role&lt;/h4&gt;
&lt;p&gt;Users with the &lt;code&gt;Editor&lt;/code&gt; role can manage sync operations but not infrastructure configuration:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Permission Category&lt;/th&gt;
              &lt;th&gt;Specific Permissions&lt;/th&gt;
              &lt;th&gt;What This Allows&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Jobs&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;provisioning.jobs:create&lt;/code&gt;&lt;br&gt;&lt;code&gt;provisioning.jobs:read&lt;/code&gt;&lt;br&gt;&lt;code&gt;provisioning.jobs:write&lt;/code&gt;&lt;br&gt;&lt;code&gt;provisioning.jobs:delete&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Trigger manual syncs&lt;br&gt;View sync jobs&lt;br&gt;Modify sync job settings&lt;br&gt;Cancel/delete sync jobs&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Read-Only Access&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;provisioning.repositories:read&lt;/code&gt;&lt;br&gt;&lt;code&gt;provisioning.settings:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;View repository configurations&lt;br&gt;View Git Sync settings&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;&lt;code&gt;Editors&lt;/code&gt; can access resources based on the folder/dashboard assignments:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;dashboards:create&lt;/code&gt;, &lt;code&gt;dashboards:read&lt;/code&gt;, &lt;code&gt;dashboards:write&lt;/code&gt;, &lt;code&gt;dashboards:delete&lt;/code&gt; - On folders/dashboards where assigned Folder Editor or Dashboard Editor&lt;/li&gt;
&lt;li&gt;&lt;code&gt;folders:create&lt;/code&gt;, &lt;code&gt;folders:read&lt;/code&gt;, &lt;code&gt;folders:write&lt;/code&gt;, &lt;code&gt;folders:delete&lt;/code&gt; - On folders where assigned Folder Editor&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;viewer-role&#34;&gt;Viewer role&lt;/h4&gt;
&lt;p&gt;Users with Viewer role have read-only access to Git Sync:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Permission Category&lt;/th&gt;
              &lt;th&gt;Specific Permissions&lt;/th&gt;
              &lt;th&gt;What This Allows&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Read-Only Access&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;provisioning.repositories:read&lt;/code&gt;&lt;br&gt;&lt;code&gt;provisioning.settings:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;View repository configurations&lt;br&gt;View Git Sync settings (required for UI)&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;&lt;code&gt;Viewers&lt;/code&gt; can access resources based on the folder/dashboard assignments:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;dashboards:read&lt;/code&gt; - On folders/dashboards where assigned Folder Viewer or Dashboard Viewer&lt;/li&gt;
&lt;li&gt;&lt;code&gt;folders:read&lt;/code&gt; - On folders where assigned Folder Viewer&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;rbac-for-dashboards-and-folders&#34;&gt;RBAC for dashboards and folders&lt;/h3&gt;
&lt;p&gt;Provisioned dashboards and folders use the Grafana standard permission model. To modify provisioned resources, you will need permissions over your dashboard and folder.&lt;/p&gt;
&lt;p&gt;The following applies for Git Sync:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Users need standard &lt;code&gt;dashboards:*&lt;/code&gt; and &lt;code&gt;folders:*&lt;/code&gt; permissions to work with provisioned resources&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Editors&lt;/code&gt; and &lt;code&gt;Viewers&lt;/code&gt; need &lt;code&gt;provisioning.settings:read&lt;/code&gt; and &lt;code&gt;provisioning.repositories:read&lt;/code&gt; to view Git Sync configuration&lt;/li&gt;
&lt;li&gt;Users do &lt;strong&gt;not&lt;/strong&gt; need repository write/delete or connection permissions to edit dashboards&lt;/li&gt;
&lt;li&gt;Dashboard-level permissions override folder-level permissions&lt;/li&gt;
&lt;li&gt;Changes made by users with appropriate permissions automatically sync to Git&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;configure-git-repository-protection&#34;&gt;Configure Git repository protection&lt;/h2&gt;
&lt;p&gt;After you&amp;rsquo;ve configured your Grafana permissions, set up the appropriate permissions at your Git provider to write changes. Repository protection settings control write access, branch protection rules, and code review requirements.&lt;/p&gt;
&lt;p&gt;For detailed information about configuring repository write access and branch protection, refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/gitsync-repo-protection/&#34;&gt;Repository protection for Git Sync&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;troubleshoot-permissions&#34;&gt;Troubleshoot permissions&lt;/h2&gt;
&lt;h3 id=&#34;permission-denied-when-saving-a-dashboard&#34;&gt;&amp;ldquo;Permission denied&amp;rdquo; when saving a dashboard&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause&lt;/strong&gt;: User lacks &lt;strong&gt;Editor&lt;/strong&gt; or &lt;strong&gt;Admin&lt;/strong&gt; permission on the provisioned folder.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Verify the user&amp;rsquo;s folder-level permissions in Grafana&lt;/li&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Folder settings &amp;gt; Permissions&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Grant the user or their team &lt;strong&gt;Editor&lt;/strong&gt; or &lt;strong&gt;Admin&lt;/strong&gt; role&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;git-sync-fails-with-403-forbidden-or-unauthorized&#34;&gt;Git Sync fails with &amp;ldquo;403 Forbidden&amp;rdquo; or &amp;ldquo;Unauthorized&amp;rdquo;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause&lt;/strong&gt;: The Git provider credentials lack the required permissions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Verify the authentication credentials (GitHub App, Personal Access Token, etc.) have &lt;strong&gt;read and write&lt;/strong&gt; permissions on the repository&lt;/li&gt;
&lt;li&gt;Check that the credentials have permission to create pull requests (if branch protection is enabled)&lt;/li&gt;
&lt;li&gt;If using a GitHub App or OAuth app, verify it is installed and authorized for the target repository&lt;/li&gt;
&lt;li&gt;For expired or revoked tokens, generate new credentials and update the Git Sync connection configuration&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;dashboard-changes-commit-directly-instead-of-creating-pull-requests&#34;&gt;Dashboard changes commit directly instead of creating pull requests&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause&lt;/strong&gt;: Branch protection is not configured at the Git provider.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;: Enable branch protection rules at your Git provider to enforce pull request workflows or in your Grafana repository settings. Refer to your Git provider&amp;rsquo;s documentation for instructions on configuring branch protection.&lt;/p&gt;
]]></content><description>&lt;h1 id="git-sync-permissions-and-access-control">Git Sync permissions and access control&lt;/h1>
&lt;div class="admonition admonition-note">&lt;blockquote>&lt;p class="title text-uppercase">Note&lt;/p>&lt;p>&lt;strong>Git Sync is now GA for Grafana Cloud, OSS and Enterprise.&lt;/strong> Refer to
&lt;a href="/docs/grafana/v13.0/as-code/observability-as-code/git-sync/usage-limits/">Usage and performance limitations&lt;/a> to understand usage limits for the different tiers.&lt;/p></description></item><item><title>Configure Git repository protection</title><link>https://grafana.com/docs/grafana/v13.0/as-code/observability-as-code/git-sync/permissions-git/</link><pubDate>Thu, 23 Apr 2026 11:39:03 +0000</pubDate><guid>https://grafana.com/docs/grafana/v13.0/as-code/observability-as-code/git-sync/permissions-git/</guid><content><![CDATA[&lt;h1 id=&#34;configure-git-repository-protection&#34;&gt;Configure Git repository protection&lt;/h1&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Git Sync is now GA for Grafana Cloud, OSS and Enterprise.&lt;/strong&gt; Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/usage-limits/&#34;&gt;Usage and performance limitations&lt;/a&gt; to understand usage limits for the different tiers.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;/help/&#34;&gt;Contact Grafana&lt;/a&gt; for support or to report any issues you encounter and help us improve this feature.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;When you use Git Sync, your dashboard configurations are stored as code in a Git repository. Git repository protection controls who can access this source code and who can modify it. This guide explains how to configure repository access at your Git provider to protect your dashboard source code.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;Repository protection works as an additional security layer after Grafana internal permissions. For information about Grafana permissions, refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/permissions-grafana/&#34;&gt;Git Sync permissions and access control&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h2 id=&#34;required-permissions-at-the-git-provider-level&#34;&gt;Required permissions at the Git provider level&lt;/h2&gt;
&lt;p&gt;Git Sync authentication credentials must have specific permissions at your Git provider:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Required for all configurations&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Read access to repository contents&lt;/li&gt;
&lt;li&gt;Read access to branch information&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Required for writing changes&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Write access to create commits&lt;/li&gt;
&lt;li&gt;Permission to create pull requests (when branch protection is enabled)&lt;/li&gt;
&lt;li&gt;Permission to push to feature branches (for creating pull requests)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Optional for instant synchronization&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Permission to create and manage webhooks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Refer to the 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/git-sync-setup/&#34;&gt;Git Sync setup documentation&lt;/a&gt; for detailed instructions on configuring authentication for your Git provider.&lt;/p&gt;
&lt;h2 id=&#34;control-access-to-the-dashboards-source-code&#34;&gt;Control access to the dashboards source code&lt;/h2&gt;
&lt;p&gt;You can access dashboard source code through two paths, each with its own protection mechanism:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Grafana files endpoint&lt;/strong&gt;: Users can view and edit dashboard source code through the Grafana files API endpoint. Use Grafana folder and dashboard permissions to control this access. Refer to &lt;a href=&#34;#manage-access-to-dashboard-source-code-via-the-api&#34;&gt;Manage access to dashboard source code via the API&lt;/a&gt; for more information.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Git repository&lt;/strong&gt;: Users with repository access can view and modify dashboard files directly in Git. You can control repository permissions in your Git provider. Refer to &lt;a href=&#34;#control-access-to-your-git-repository&#34;&gt;Control access to your Git repository &lt;/a&gt; for more information.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Protect both access points to secure your dashboard configurations.&lt;/p&gt;
&lt;h2 id=&#34;manage-access-to-dashboard-source-code-via-the-api&#34;&gt;Manage access to dashboard source code via the API&lt;/h2&gt;
&lt;h3 id=&#34;view-dashboard-source-code&#34;&gt;View dashboard source code&lt;/h3&gt;
&lt;p&gt;You can view dashboard source code through the files endpoint if you have &lt;strong&gt;Viewer&lt;/strong&gt; permission or higher on the dashboard or its parent folder. This allows you to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;List files in provisioned folders and branches&lt;/li&gt;
&lt;li&gt;Read dashboard JSON content&lt;/li&gt;
&lt;li&gt;View folder structure and organization&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;edit-dashboard-source-code&#34;&gt;Edit dashboard source code&lt;/h3&gt;
&lt;p&gt;You can modify dashboard source code through the files endpoint if you have &lt;strong&gt;Editor&lt;/strong&gt; or &lt;strong&gt;Admin&lt;/strong&gt; permission on the dashboard or its parent folder. This allows you to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create new dashboard files&lt;/li&gt;
&lt;li&gt;Update existing dashboard content&lt;/li&gt;
&lt;li&gt;Delete dashboards&lt;/li&gt;
&lt;li&gt;Modify folder structure&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When you save changes through this endpoint, Git Sync commits those changes to the Git repository (or creates pull requests if branch protection is enabled), subject to Git repository permissions.&lt;/p&gt;
&lt;p&gt;For detailed information about configuring folder and dashboard permissions in Grafana, refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/permissions-grafana/&#34;&gt;Git Sync permissions and access control&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;control-access-to-your-git-repository&#34;&gt;Control access to your Git repository&lt;/h2&gt;
&lt;p&gt;Access control at the Git provider level determines who can view and modify your dashboard source code. Configure repository access based on your security and compliance requirements.&lt;/p&gt;
&lt;h3 id=&#34;read-access-repository-visibility&#34;&gt;Read access (repository visibility)&lt;/h3&gt;
&lt;p&gt;Read access controls who can view the dashboard source code stored in your repository. This includes dashboard JSON files, folder structure, and any other files in the repository.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Public repositories&lt;/strong&gt;: Anyone can view the repository contents, including dashboard configurations and any data or queries they contain. Only use public repositories if your dashboards contain no sensitive information.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Private repositories&lt;/strong&gt;: Only authorized users can view repository contents. This protects dashboard configurations, queries, and any embedded credentials or sensitive data from public access.&lt;/p&gt;
&lt;p&gt;For Git Sync to function, the authentication credentials configured in Grafana must have read access to pull dashboard changes from Git to Grafana.&lt;/p&gt;
&lt;h3 id=&#34;write-access-push-permissions&#34;&gt;Write access (push permissions)&lt;/h3&gt;
&lt;p&gt;Write access controls who can push changes to your repository. This determines who can modify dashboard source code, either directly or through pull requests.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Direct write access&lt;/strong&gt;: Users with write permission can push commits directly to branches. For Git Sync to push dashboard changes from Grafana to Git, the authentication credentials must have write access to the repository.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Protected branches&lt;/strong&gt;: Branch protection rules can restrict direct writes and require changes to go through pull requests with review and approval, even for users with write access.&lt;/p&gt;
&lt;p&gt;Refer to the 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/git-sync-setup/&#34;&gt;Git Sync setup documentation&lt;/a&gt; for detailed instructions on configuring authentication for your Git provider.&lt;/p&gt;
&lt;h2 id=&#34;control-how-changes-are-written-in-git-sync&#34;&gt;Control how changes are written in Git Sync&lt;/h2&gt;
&lt;p&gt;Git Sync supports different modes for writing dashboard changes to your repository, from allowing direct commits to requiring formal review processes.&lt;/p&gt;
&lt;h3 id=&#34;read-only-mode&#34;&gt;Read-only mode&lt;/h3&gt;
&lt;p&gt;Configure the repository as read-only in Grafana to prevent any writes to Git from the Grafana UI. Dashboards sync from Git to Grafana, but users cannot save changes back to Git.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use when&lt;/strong&gt;: Git is the single source of truth and all changes must be made through direct Git commits or CI/CD processes.&lt;/p&gt;
&lt;h3 id=&#34;direct-commit-mode&#34;&gt;Direct commit mode&lt;/h3&gt;
&lt;p&gt;When the repository allows writes and branch protection is not enabled, Git Sync commits dashboard changes directly to the configured branch without review.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use when&lt;/strong&gt;: Rapid iteration is needed and changes don&amp;rsquo;t require formal review, such as in development environments.&lt;/p&gt;
&lt;h3 id=&#34;pull-request-mode&#34;&gt;Pull request mode&lt;/h3&gt;
&lt;p&gt;When branch protection is enabled at your Git provider, Git Sync creates pull requests instead of committing directly. Changes require review and approval before merging to the main branch.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use when&lt;/strong&gt;: Changes require review and approval, such as in production environments or when multiple teams collaborate on dashboards.&lt;/p&gt;
&lt;h2 id=&#34;protect-your-branch&#34;&gt;Protect your branch&lt;/h2&gt;
&lt;p&gt;Branch protection rules at your Git provider enforce how changes are made to specific branches. When enabled on the branch that Git Sync targets, these rules require Git Sync to create pull requests instead of pushing commits directly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Common use cases for branch protection&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Production environments requiring change approval&lt;/li&gt;
&lt;li&gt;Compliance requirements for audit trails and review&lt;/li&gt;
&lt;li&gt;Multi-team environments where changes need visibility&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Branch protection can enforce various controls such as requiring pull requests before merging, setting reviewer approval requirements, running automated validation checks, preventing force pushes, and restricting who can push directly to protected branches.&lt;/p&gt;
&lt;p&gt;Refer to your Git provider&amp;rsquo;s documentation for specific instructions on configuring branch protection rules.&lt;/p&gt;
&lt;h2 id=&#34;code-review-assignments&#34;&gt;Code review assignments&lt;/h2&gt;
&lt;p&gt;Many Git providers support &lt;code&gt;CODEOWNERS&lt;/code&gt; files that automatically assign reviewers to pull requests based on which files are changed. When Git Sync creates a pull request, the Git provider can use the &lt;code&gt;CODEOWNERS&lt;/code&gt; file to assign the appropriate team or users for review.&lt;/p&gt;
&lt;p&gt;This ensures dashboard changes are reviewed by the teams responsible for those dashboards, based on folder path or file patterns.&lt;/p&gt;
&lt;p&gt;Refer to your Git provider&amp;rsquo;s documentation for instructions on configuring &lt;code&gt;CODEOWNERS&lt;/code&gt; files.&lt;/p&gt;
&lt;h2 id=&#34;troubleshooting&#34;&gt;Troubleshooting&lt;/h2&gt;
&lt;h3 id=&#34;git-sync-fails-with-403-forbidden-or-unauthorized&#34;&gt;Git Sync fails with &amp;ldquo;403 Forbidden&amp;rdquo; or &amp;ldquo;Unauthorized&amp;rdquo;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause&lt;/strong&gt;: The authentication credentials lack the required repository permissions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Verify the credentials have read and write access to the repository&lt;/li&gt;
&lt;li&gt;Check that the credentials can create pull requests (if branch protection is enabled)&lt;/li&gt;
&lt;li&gt;Verify authentication credentials haven&amp;rsquo;t expired&lt;/li&gt;
&lt;li&gt;For GitHub Apps, verify the app is installed and authorized for the repository&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;dashboard-changes-commit-directly-without-review&#34;&gt;Dashboard changes commit directly without review&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause&lt;/strong&gt;: Branch protection is not configured at the Git provider.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Enable branch protection on the target branch at your Git provider&lt;/li&gt;
&lt;li&gt;Configure the branch to require pull requests before merging&lt;/li&gt;
&lt;li&gt;Verify the branch name in protection rules matches the branch configured in Grafana&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;pull-requests-not-created-when-expected&#34;&gt;Pull requests not created when expected&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause&lt;/strong&gt;: Branch protection is not enabled or the authentication credentials lack pull request creation permission.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Verify branch protection is enabled on the correct branch&lt;/li&gt;
&lt;li&gt;Check that the credentials have permission to create pull requests&lt;/li&gt;
&lt;li&gt;Ensure the branch name in Git Sync settings matches the protected branch exactly&lt;/li&gt;
&lt;/ol&gt;
]]></content><description>&lt;h1 id="configure-git-repository-protection">Configure Git repository protection&lt;/h1>
&lt;div class="admonition admonition-note">&lt;blockquote>&lt;p class="title text-uppercase">Note&lt;/p>&lt;p>&lt;strong>Git Sync is now GA for Grafana Cloud, OSS and Enterprise.&lt;/strong> Refer to
&lt;a href="/docs/grafana/v13.0/as-code/observability-as-code/git-sync/usage-limits/">Usage and performance limitations&lt;/a> to understand usage limits for the different tiers.&lt;/p></description></item><item><title>Git Sync deployment scenarios</title><link>https://grafana.com/docs/grafana/v13.0/as-code/observability-as-code/git-sync/scenarios/</link><pubDate>Thu, 23 Apr 2026 11:39:03 +0000</pubDate><guid>https://grafana.com/docs/grafana/v13.0/as-code/observability-as-code/git-sync/scenarios/</guid><content><![CDATA[&lt;h1 id=&#34;git-sync-deployment-scenarios&#34;&gt;Git Sync deployment scenarios&lt;/h1&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Git Sync is now GA for Grafana Cloud, OSS and Enterprise.&lt;/strong&gt; Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/usage-limits/&#34;&gt;Usage and performance limitations&lt;/a&gt; to understand usage limits for the different tiers.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;/help/&#34;&gt;Contact Grafana&lt;/a&gt; for support or to report any issues you encounter and help us improve this feature.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;This guide shows practical deployment scenarios for Grafana’s Git Sync. Learn how to configure bidirectional synchronization between Grafana and Git repositories for teams, environments, and regions.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/provision-resources/git-sync-deployment-scenarios/single-instance/&#34;&gt;Single instance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/provision-resources/git-sync-deployment-scenarios/dev-prod/&#34;&gt;Git Sync for development and production environments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/provision-resources/git-sync-deployment-scenarios/multi-region/&#34;&gt;Git Sync with regional replication&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/provision-resources/git-sync-deployment-scenarios/high-availability/&#34;&gt;High availability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/provision-resources/git-sync-deployment-scenarios/multi-team/&#34;&gt;Git Sync in a shared Grafana instance&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;learn-more&#34;&gt;Learn more&lt;/h2&gt;
&lt;p&gt;Refer to the following documents to learn more:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/provision-resources/intro-git-sync/&#34;&gt;Git Sync introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/git-sync/key-concepts/&#34;&gt;Git Sync key concepts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/provision-resources/git-sync-setup/&#34;&gt;Git Sync setup guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v13.0/administration/provisioning/&#34;&gt;Dashboard provisioning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v13.0/as-code/observability-as-code/&#34;&gt;Observability as Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="git-sync-deployment-scenarios">Git Sync deployment scenarios&lt;/h1>
&lt;div class="admonition admonition-note">&lt;blockquote>&lt;p class="title text-uppercase">Note&lt;/p>&lt;p>&lt;strong>Git Sync is now GA for Grafana Cloud, OSS and Enterprise.&lt;/strong> Refer to
&lt;a href="/docs/grafana/v13.0/as-code/observability-as-code/git-sync/usage-limits/">Usage and performance limitations&lt;/a> to understand usage limits for the different tiers.&lt;/p></description></item></channel></rss>