<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/v12.4/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/v12.4/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/v12.4/as-code/observability-as-code/git-sync/key-concepts/</link><pubDate>Fri, 03 Apr 2026 19:43:06 +0000</pubDate><guid>https://grafana.com/docs/grafana/v12.4/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-caution&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Caution&lt;/p&gt;&lt;p&gt;Git Sync is available in &lt;a href=&#34;/docs/release-life-cycle/&#34;&gt;public preview&lt;/a&gt; for Grafana Cloud, and is an &lt;a href=&#34;/docs/release-life-cycle/&#34;&gt;experimental feature&lt;/a&gt; in Grafana v12 for open source and Enterprise editions. Documentation and support is available &lt;strong&gt;based on the different tiers&lt;/strong&gt; but might be limited to enablement, configuration, and some troubleshooting. No SLAs are provided.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Git Sync is under development.&lt;/strong&gt; Refer to 
    &lt;a href=&#34;/docs/grafana/v12.4/as-code/observability-as-code/git-sync/usage-limits/&#34;&gt;Usage and performance limitations&lt;/a&gt; for more information. &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-caution">&lt;blockquote>&lt;p class="title text-uppercase">Caution&lt;/p>&lt;p>Git Sync is available in &lt;a href="/docs/release-life-cycle/">public preview&lt;/a> for Grafana Cloud, and is an &lt;a href="/docs/release-life-cycle/">experimental feature&lt;/a> in Grafana v12 for open source and Enterprise editions. Documentation and support is available &lt;strong>based on the different tiers&lt;/strong> but might be limited to enablement, configuration, and some troubleshooting. No SLAs are provided.&lt;/p></description></item><item><title>Usage and performance limitations</title><link>https://grafana.com/docs/grafana/v12.4/as-code/observability-as-code/git-sync/usage-limits/</link><pubDate>Fri, 03 Apr 2026 19:43:06 +0000</pubDate><guid>https://grafana.com/docs/grafana/v12.4/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-caution&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Caution&lt;/p&gt;&lt;p&gt;Git Sync is available in &lt;a href=&#34;/docs/release-life-cycle/&#34;&gt;public preview&lt;/a&gt; for Grafana Cloud, and is an &lt;a href=&#34;/docs/release-life-cycle/&#34;&gt;experimental feature&lt;/a&gt; in Grafana v12 for open source and Enterprise editions. Documentation and support is available &lt;strong&gt;based on the different tiers&lt;/strong&gt; but might be limited to enablement, configuration, and some troubleshooting. No SLAs are provided.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Git Sync is under development.&lt;/strong&gt; Refer to 
    &lt;a href=&#34;/docs/grafana/v12.4/as-code/observability-as-code/git-sync/usage-limits/&#34;&gt;Usage and performance limitations&lt;/a&gt; for more information. &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;Grafana limit&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;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 only. Refer to 
    &lt;a href=&#34;/docs/grafana/v12.4/as-code/observability-as-code/git-sync/git-sync-setup/set-up-before/#enable-required-feature-toggles&#34;&gt;Enable required feature toggles&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 standard Git over HTTP protocol, 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;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-gitlab-bitbucket&#34;&gt;Enhanced integrations: GitHub, 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;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;synced-resources&#34;&gt;Synced resources&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;You can only sync dashboards and folders. Refer to &lt;a href=&#34;#resource-support-and-compatibility&#34;&gt;Supported resources&lt;/a&gt; for more information.&lt;/li&gt;
&lt;li&gt;If you&amp;rsquo;re using Git Sync in Grafana OSS and Grafana Enterprise, some resources might be in an incompatible data format and won&amp;rsquo;t be synced.&lt;/li&gt;
&lt;li&gt;Full-instance sync is not available in Grafana Cloud and is experimental in Grafana OSS and Grafana Enterprise.&lt;/li&gt;
&lt;li&gt;When migrating to full instance sync, during the synchronization process your resources will be temporarily unavailable. No one will be able to create, edit, or delete resources during this process.&lt;/li&gt;
&lt;li&gt;If you want to manage existing resources with Git Sync, you need to save them as JSON files and commit them to the synced repository. Use &lt;code&gt;grafanactl&lt;/code&gt; or open a PR to import, copy, move, or save a dashboard. Refer to 
    &lt;a href=&#34;/docs/grafana/v12.4/as-code/observability-as-code/git-sync/export-resources/&#34;&gt;Export non-provisioned resources from Grafana&lt;/a&gt; for more details.&lt;/li&gt;
&lt;li&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;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;permission-management&#34;&gt;Permission management&lt;/h3&gt;
&lt;p&gt;You cannot modify the permissions of a provisioned folder after you&amp;rsquo;ve synced it.&lt;/p&gt;
&lt;p&gt;The default permissions are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Admin = Admin&lt;/li&gt;
&lt;li&gt;Editor = Editor&lt;/li&gt;
&lt;li&gt;Viewer = Viewer.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Refer to 
    &lt;a href=&#34;/docs/grafana/v12.4/administration/roles-and-permissions/&#34;&gt;Roles and permissions&lt;/a&gt; for more information.&lt;/p&gt;
]]></content><description>&lt;h1 id="usage-and-performance-limitations">Usage and performance limitations&lt;/h1>
&lt;div class="admonition admonition-caution">&lt;blockquote>&lt;p class="title text-uppercase">Caution&lt;/p>&lt;p>Git Sync is available in &lt;a href="/docs/release-life-cycle/">public preview&lt;/a> for Grafana Cloud, and is an &lt;a href="/docs/release-life-cycle/">experimental feature&lt;/a> in Grafana v12 for open source and Enterprise editions. Documentation and support is available &lt;strong>based on the different tiers&lt;/strong> but might be limited to enablement, configuration, and some troubleshooting. No SLAs are provided.&lt;/p></description></item><item><title>Set up Git Sync</title><link>https://grafana.com/docs/grafana/v12.4/as-code/observability-as-code/git-sync/git-sync-setup/</link><pubDate>Fri, 03 Apr 2026 19:43:06 +0000</pubDate><guid>https://grafana.com/docs/grafana/v12.4/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-caution&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Caution&lt;/p&gt;&lt;p&gt;Git Sync is available in &lt;a href=&#34;/docs/release-life-cycle/&#34;&gt;public preview&lt;/a&gt; for Grafana Cloud, and is an &lt;a href=&#34;/docs/release-life-cycle/&#34;&gt;experimental feature&lt;/a&gt; in Grafana v12 for open source and Enterprise editions. Documentation and support is available &lt;strong&gt;based on the different tiers&lt;/strong&gt; but might be limited to enablement, configuration, and some troubleshooting. No SLAs are provided.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Git Sync is under development.&lt;/strong&gt; Refer to 
    &lt;a href=&#34;/docs/grafana/v12.4/as-code/observability-as-code/git-sync/usage-limits/&#34;&gt;Usage and performance limitations&lt;/a&gt; for more information. &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/v12.4/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;, 
    &lt;a href=&#34;/docs/grafana/v12.4/as-code/observability-as-code/git-sync/git-sync-setup/set-up-code/&#34;&gt;as code&lt;/a&gt;, or 
    &lt;a href=&#34;/docs/grafana/v12.4/as-code/observability-as-code/git-sync/git-sync-setup/set-up-terraform/&#34;&gt;with Terraform&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/v12.4/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/v12.4/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/v12.4/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 the following options to proceed:&lt;/p&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 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;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;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;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/v12.4/as-code/observability-as-code/git-sync/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;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/v12.4/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/v12.4/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/v12.4/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/v12.4/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/v12.4/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/v12.4/as-code/observability-as-code/provision-resources/export-resources/&#34;&gt;Export resources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://grafana.github.io/grafanactl/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;code&gt;grafanactl&lt;/code&gt; documentation&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-caution">&lt;blockquote>&lt;p class="title text-uppercase">Caution&lt;/p>&lt;p>Git Sync is available in &lt;a href="/docs/release-life-cycle/">public preview&lt;/a> for Grafana Cloud, and is an &lt;a href="/docs/release-life-cycle/">experimental feature&lt;/a> in Grafana v12 for open source and Enterprise editions. Documentation and support is available &lt;strong>based on the different tiers&lt;/strong> but might be limited to enablement, configuration, and some troubleshooting. No SLAs are provided.&lt;/p></description></item><item><title>Add non-provisioned resources from Grafana</title><link>https://grafana.com/docs/grafana/v12.4/as-code/observability-as-code/git-sync/export-resources/</link><pubDate>Fri, 03 Apr 2026 19:43:06 +0000</pubDate><guid>https://grafana.com/docs/grafana/v12.4/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-caution&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Caution&lt;/p&gt;&lt;p&gt;Git Sync is available in &lt;a href=&#34;/docs/release-life-cycle/&#34;&gt;public preview&lt;/a&gt; for Grafana Cloud, and is an &lt;a href=&#34;/docs/release-life-cycle/&#34;&gt;experimental feature&lt;/a&gt; in Grafana v12 for open source and Enterprise editions. Documentation and support is available based on the different tiers but might be limited to enablement, configuration, and some troubleshooting. No SLAs are provided.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Git Sync is under development.&lt;/strong&gt; Refer to 
    &lt;a href=&#34;/docs/grafana/v12.4/as-code/observability-as-code/git-sync/usage-limits/&#34;&gt;Usage and performance limitations&lt;/a&gt; for more information. &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;Git Sync is under development, and traditional operations like moving or copying a dashboard to a provisioned folder are not fully supported for resources already existing in Grafana. Git Sync doesn&amp;rsquo;t offer any built-in functionality to easily export resources from Grafana in bulk. However, the following options are available:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#provision-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 the 
    &lt;a href=&#34;/docs/grafana/v12.4/as-code/observability-as-code/grafana-cli/&#34;&gt;Grafana CLI&lt;/a&gt;. Use the CLI 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;grafanactl&lt;/code&gt; context to point to your instance as documented in &lt;a href=&#34;https://grafana.github.io/grafanactl/configuration/#defining-contexts&#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;grafanactl 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/v1beta1&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;v1beta1&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/v12.4/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-caution">&lt;blockquote>&lt;p class="title text-uppercase">Caution&lt;/p>&lt;p>Git Sync is available in &lt;a href="/docs/release-life-cycle/">public preview&lt;/a> for Grafana Cloud, and is an &lt;a href="/docs/release-life-cycle/">experimental feature&lt;/a> in Grafana v12 for open source and Enterprise editions. Documentation and support is available based on the different tiers but might be limited to enablement, configuration, and some troubleshooting. No SLAs are provided.&lt;/p></description></item><item><title>Work with provisioned repositories in Git Sync</title><link>https://grafana.com/docs/grafana/v12.4/as-code/observability-as-code/git-sync/use-git-sync/</link><pubDate>Fri, 03 Apr 2026 19:43:06 +0000</pubDate><guid>https://grafana.com/docs/grafana/v12.4/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-caution&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Caution&lt;/p&gt;&lt;p&gt;Git Sync is available in &lt;a href=&#34;/docs/release-life-cycle/&#34;&gt;public preview&lt;/a&gt; for Grafana Cloud, and is an &lt;a href=&#34;/docs/release-life-cycle/&#34;&gt;experimental feature&lt;/a&gt; in Grafana v12 for open source and Enterprise editions. Documentation and support is available &lt;strong&gt;based on the different tiers&lt;/strong&gt; but might be limited to enablement, configuration, and some troubleshooting. No SLAs are provided.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Git Sync is under development.&lt;/strong&gt; Refer to 
    &lt;a href=&#34;/docs/grafana/v12.4/as-code/observability-as-code/git-sync/usage-limits/&#34;&gt;Usage and performance limitations&lt;/a&gt; for more information. &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 have synced 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 either view the current status of the sync, carry out pulls, or update your settings.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Refer to 
    &lt;a href=&#34;/docs/grafana/v12.4/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-caution&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Caution&lt;/p&gt;&lt;p&gt;Before you proceed to troubleshoot, understand the 
    &lt;a href=&#34;/docs/grafana/v12.4/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. Common events include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sync started&lt;/li&gt;
&lt;li&gt;Sync completed&lt;/li&gt;
&lt;li&gt;Sync failed (with error details)&lt;/li&gt;
&lt;li&gt;Sync 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;If dashboards are not syncing, check if the repository URL is correct and accessible from the Grafana instance.&lt;/li&gt;
&lt;li&gt;Ensure that the configured repository branch exists and is correctly referenced.&lt;/li&gt;
&lt;li&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, and wait for the synchronization process to complete.&lt;/p&gt;
&lt;p&gt;Existing dashboards with the same &lt;code&gt;uid&lt;/code&gt; are overwritten.&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&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;
]]></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-caution">&lt;blockquote>&lt;p class="title text-uppercase">Caution&lt;/p>&lt;p>Git Sync is available in &lt;a href="/docs/release-life-cycle/">public preview&lt;/a> for Grafana Cloud, and is an &lt;a href="/docs/release-life-cycle/">experimental feature&lt;/a> in Grafana v12 for open source and Enterprise editions. Documentation and support is available &lt;strong>based on the different tiers&lt;/strong> but might be limited to enablement, configuration, and some troubleshooting. No SLAs are provided.&lt;/p></description></item><item><title>Work with provisioned dashboards in Git Sync</title><link>https://grafana.com/docs/grafana/v12.4/as-code/observability-as-code/git-sync/provisioned-dashboards/</link><pubDate>Fri, 03 Apr 2026 19:43:06 +0000</pubDate><guid>https://grafana.com/docs/grafana/v12.4/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-caution&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Caution&lt;/p&gt;&lt;p&gt;Git Sync is available in &lt;a href=&#34;/docs/release-life-cycle/&#34;&gt;public preview&lt;/a&gt; for Grafana Cloud, and is an &lt;a href=&#34;/docs/release-life-cycle/&#34;&gt;experimental feature&lt;/a&gt; in Grafana v12 for open source and Enterprise editions. Documentation and support is available &lt;strong&gt;based on the different tiers&lt;/strong&gt; but might be limited to enablement, configuration, and some troubleshooting. No SLAs are provided.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Git Sync is under development.&lt;/strong&gt; Refer to 
    &lt;a href=&#34;/docs/grafana/v12.4/as-code/observability-as-code/git-sync/usage-limits/&#34;&gt;Usage and performance limitations&lt;/a&gt; for more information. &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/v12.4/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/v12.4/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/v12.4/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/v12.4/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/v12.4/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-caution">&lt;blockquote>&lt;p class="title text-uppercase">Caution&lt;/p>&lt;p>Git Sync is available in &lt;a href="/docs/release-life-cycle/">public preview&lt;/a> for Grafana Cloud, and is an &lt;a href="/docs/release-life-cycle/">experimental feature&lt;/a> in Grafana v12 for open source and Enterprise editions. Documentation and support is available &lt;strong>based on the different tiers&lt;/strong> but might be limited to enablement, configuration, and some troubleshooting. No SLAs are provided.&lt;/p></description></item><item><title>Git Sync deployment scenarios</title><link>https://grafana.com/docs/grafana/v12.4/as-code/observability-as-code/git-sync/scenarios/</link><pubDate>Fri, 03 Apr 2026 19:43:06 +0000</pubDate><guid>https://grafana.com/docs/grafana/v12.4/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-caution&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Caution&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Git Sync is under development&lt;/strong&gt;. It reflects Grafana’s approach to Observability as Code and might include limitations or breaking changes. For current status and known issues, refer to the 
    &lt;a href=&#34;/docs/grafana/v12.4/as-code/observability-as-code/git-sync/&#34;&gt;Git Sync introduction&lt;/a&gt;.&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/v12.4/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/v12.4/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/v12.4/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/v12.4/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/v12.4/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/v12.4/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/v12.4/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/v12.4/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/v12.4/administration/provisioning/&#34;&gt;Dashboard provisioning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v12.4/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-caution">&lt;blockquote>&lt;p class="title text-uppercase">Caution&lt;/p>&lt;p>&lt;strong>Git Sync is under development&lt;/strong>. It reflects Grafana’s approach to Observability as Code and might include limitations or breaking changes. For current status and known issues, refer to the
&lt;a href="/docs/grafana/v12.4/as-code/observability-as-code/git-sync/">Git Sync introduction&lt;/a>.&lt;/p></description></item></channel></rss>