<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Add non-provisioned resources from Grafana on Grafana Labs</title><link>https://grafana.com/docs/grafana/v13.2/as-code/observability-as-code/git-sync/add-resources/</link><description>Recent content in Add non-provisioned resources from Grafana on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/grafana/v13.2/as-code/observability-as-code/git-sync/add-resources/index.xml" rel="self" type="application/rss+xml"/><item><title>Cherry-pick and copy individual dashboards</title><link>https://grafana.com/docs/grafana/v13.2/as-code/observability-as-code/git-sync/add-resources/dashboards-copy/</link><pubDate>Tue, 06 Oct 2026 09:20:29 +0000</pubDate><guid>https://grafana.com/docs/grafana/v13.2/as-code/observability-as-code/git-sync/add-resources/dashboards-copy/</guid><content><![CDATA[&lt;h1 id=&#34;cherry-pick-and-copy-individual-dashboards&#34;&gt;Cherry-pick and copy individual dashboards&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;At the moment Git Sync only manages dashboards and folders. Alerts, data sources, and library panels are &lt;strong&gt;not&lt;/strong&gt; supported yet.&lt;/p&gt;
&lt;p&gt;To migrate your existing dashboards, refer to 
    &lt;a href=&#34;/docs/grafana/v13.2/as-code/observability-as-code/git-sync/add-resources/dashboards-migrate/&#34;&gt;Migrate existing dashboards&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;Use these methods to add a copy of one or more dashboards to a folder provisioned with Git Sync. Each copy is created with a new UID, so the original dashboards stay exactly as they are and nothing needs to be deleted. Existing links continue to point to the original dashboards, not the copies.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#add-a-dashboard-using-import-dashboards&#34;&gt;Add a dashboard using Import dashboards&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#copy-an-existing-dashboard-from-the-grafana-ui&#34;&gt;Copy an existing dashboard from the Grafana UI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;add-a-dashboard-using-import-dashboards&#34;&gt;Add a dashboard using Import dashboards&lt;/h2&gt;
&lt;p&gt;You can import dashboards directly into your Git Sync provisioned folders using the Grafana UI or the HTTP API.&lt;/p&gt;
&lt;p&gt;&lt;img
  class=&#34;lazyload d-inline-block&#34;
  data-src=&#34;/static/img/docs/ascode/gitsync-dashboards-import.png&#34;
  alt=&#34;Import dashboard&#34; width=&#34;1654&#34;
     height=&#34;414&#34;/&gt;&lt;/p&gt;
&lt;p&gt;To access the Import dashboard tool from the Git Sync UI:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to the &lt;strong&gt;Dashboards tab&lt;/strong&gt; of you connection.&lt;/li&gt;
&lt;li&gt;On the top right corner, click &lt;strong&gt;New&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Import dashboard&lt;/strong&gt; and you&amp;rsquo;ll be redirected to the wizard.&lt;/li&gt;
&lt;li&gt;Upload or paste the dashboard JSON.&lt;/li&gt;
&lt;li&gt;Fill in the relevant fields, including the branch and repository folder, and press &lt;strong&gt;Import&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Open the pull request, follow your regular workflow, and merge. Note that it could take a few minutes until the imported dashboard appears.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Keep in mind the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Importing an ordinary dashboard JSON creates a new dashboard with a new UID. To preserve the original UID instead (for a migration), provide a UID in the wizard or import a resource file that already sets &lt;code&gt;metadata.name&lt;/code&gt;. Refer to &lt;a href=&#34;#migrate-existing-dashboards-to-git-sync&#34;&gt;Migrate existing dashboards&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;UIDs are globally unique per org. Two repositories with dashboards sharing a UID will conflict.&lt;/li&gt;
&lt;li&gt;Two dashboards can share a title as long as they live at different paths in the repository. If a file with the same name already exists at the target path, the import is stopped before it overwrites anything.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information refer to 
    &lt;a href=&#34;/docs/grafana/v13.2/visualizations/dashboards/build-dashboards/import-dashboards/&#34;&gt;Import dashboards&lt;/a&gt; in the Data Visualization documentation.&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;It may take a few minutes for your changes to reflect on your screen. If they don&amp;rsquo;t, refresh the UI manually.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h2 id=&#34;copy-an-existing-dashboard-from-the-grafana-ui&#34;&gt;Copy an existing dashboard from the Grafana UI&lt;/h2&gt;
&lt;p&gt;You can also save a copy of dashboard directly from the Grafana UI to your provisioned folder. This creates a new dashboard with a new UID and leaves the original in place.&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;
]]></content><description>&lt;h1 id="cherry-pick-and-copy-individual-dashboards">Cherry-pick and copy individual dashboards&lt;/h1>
&lt;div class="admonition admonition-note">&lt;blockquote>&lt;p class="title text-uppercase">Note&lt;/p>&lt;p>At the moment Git Sync only manages dashboards and folders. Alerts, data sources, and library panels are &lt;strong>not&lt;/strong> supported yet.&lt;/p></description></item><item><title>Migrate existing dashboards to Git Sync</title><link>https://grafana.com/docs/grafana/v13.2/as-code/observability-as-code/git-sync/add-resources/dashboards-migrate/</link><pubDate>Tue, 06 Oct 2026 09:20:29 +0000</pubDate><guid>https://grafana.com/docs/grafana/v13.2/as-code/observability-as-code/git-sync/add-resources/dashboards-migrate/</guid><content><![CDATA[&lt;h1 id=&#34;migrate-existing-dashboards-to-git-sync&#34;&gt;Migrate existing dashboards to 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;At the moment Git Sync only manages dashboards and folders. Alerts, data sources, and library panels are &lt;strong&gt;not&lt;/strong&gt; supported yet. Refer to &lt;a href=&#34;#before-you-begin&#34;&gt;Before you begin&lt;/a&gt; for details.&lt;/p&gt;
&lt;p&gt;To copy a specific dashboard, refer to 
    &lt;a href=&#34;/docs/grafana/v13.2/as-code/observability-as-code/git-sync/add-resources/dashboards-copy/&#34;&gt;Cherry-pick and copy individual dashboards&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;If you migrate your existing non-provisioned dashboards under Git Sync, dashboards keep their UIDs, so existing links, references, and bookmarks keep working. Because the UID is preserved, Git Sync adopts the resource in place, and you must delete the original resource so Git Sync can take over its UID.&lt;/p&gt;
&lt;p&gt;The migration follows these steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;#before-you-begin&#34;&gt;Before you begin&lt;/a&gt;: Back up your instance and understand what Git Sync manages.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#step-1-export-the-resources-to-your-repository&#34;&gt;Step 1: Export the resources to your repository&lt;/a&gt;: Export with UIDs preserved and commit.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#step-2-delete-the-original-dashboards&#34;&gt;Step 2: Delete the original dashboards&lt;/a&gt;: Required so Git Sync can adopt each dashboard by UID.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#step-3-validate-the-migration&#34;&gt;Step 3: Validate the migration&lt;/a&gt;: Confirm the resources are synced before moving on.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;before-you-begin&#34;&gt;Before you begin&lt;/h2&gt;
&lt;p&gt;Because migrating involves deleting resources, read this section and plan carefully before you start.&lt;/p&gt;
&lt;p&gt;To migrate safely, keep in mind the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Back up your instance first.&lt;/strong&gt; Export or snapshot your dashboards, folders, alert rules, and library panels before you delete anything. Deleted resources can&amp;rsquo;t be restored from the Grafana UI.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Migrate folder by folder.&lt;/strong&gt; Start with a single folder, complete the full migration for it, and validate the result before moving to the next one. This limits the impact if something goes wrong and lets you get comfortable with the process.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Do not delete a folder that contains alerts or library panels&lt;/strong&gt;. Git Sync only manages dashboards and folders. Alerts, data sources, library panels, and other resources are not supported yet, and Git Sync will not recreate them. Deleting the folder deletes them permanently.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;manage-and-delete-migrated-resources&#34;&gt;Manage and delete migrated resources&lt;/h3&gt;
&lt;p&gt;With a folder or folderless sync, Git Sync recreates dashboards and folders:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You&amp;rsquo;ll have to delete each original dashboard you&amp;rsquo;re migrating so Git Sync can take over its UID.&lt;/li&gt;
&lt;li&gt;You don&amp;rsquo;t need to delete your original folders to migrate the dashboards inside them. Git Sync creates its own new folders when it syncs with your existing repository, deriving each folder&amp;rsquo;s UID from the folder&amp;rsquo;s &lt;strong&gt;path in the repository&lt;/strong&gt;. These folders are independent from your existing ones, even if they share the same name.&lt;/li&gt;
&lt;li&gt;However, Git Sync doesn&amp;rsquo;t recreate alerts or library panels. Deleting or recreating a folder to match your repository structure permanently deletes any alert rules and library panels it holds, and they are not restored.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Refer to &lt;a href=&#34;#step-2-delete-the-original-dashboards&#34;&gt;Step 2: Delete the original dashboards&lt;/a&gt; for more details.&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;Full-instance migrations have different cleanup behavior and can delete unmanaged folders, so follow the full-instance migration guidance instead.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h3 id=&#34;keep-your-original-resources-and-set-them-apart&#34;&gt;Keep your original resources and set them apart&lt;/h3&gt;
&lt;p&gt;After a migration you&amp;rsquo;ll have your original folder (holding any alerts and library panels) alongside the new Git Sync folder of the same name. To avoid confusion, rename your original folders or move them under a single top-level &lt;strong&gt;Alerts &amp;amp; Library Panels&lt;/strong&gt; folder. This keeps the unsupported resources intact and clearly separated from the provisioned dashboards.&lt;/p&gt;
&lt;p&gt;If you need links to your original folders to keep working, refer to &lt;a href=&#34;#preserve-links-to-the-original-folders&#34;&gt;Preserve links to the original folders&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;step-1-export-the-resources-to-your-repository&#34;&gt;Step 1: Export the resources to your repository&lt;/h2&gt;
&lt;p&gt;Export the dashboards you want to migrate so that each file keeps the dashboard&amp;rsquo;s original UID (&lt;code&gt;metadata.name&lt;/code&gt;), then commit the files to your Git repository. You can use either of the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#export-with-the-grafana-cli&#34;&gt;Export with the Grafana CLI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#export-as-a-json-resource-file&#34;&gt;Export as a JSON resource file&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;export-with-the-grafana-cli&#34;&gt;Export with the Grafana CLI&lt;/h3&gt;
&lt;p&gt;You can export existing dashboards from the terminal or from agentic coding tools using the &lt;code&gt;gcx&lt;/code&gt; CLI. With &lt;code&gt;gcx&lt;/code&gt; you can 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;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;For more information, refer to the 
    &lt;a href=&#34;/docs/grafana/v13.2/as-code/observability-as-code/grafana-cli/gcx/&#34;&gt;&lt;code&gt;gcx&lt;/code&gt; documentation&lt;/a&gt; for setup and usage information.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;To export dashboards with &lt;code&gt;gcx&lt;/code&gt;, follow these steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&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;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pull the resources you want to sync from the instance to your local 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;gcx resources pull dashboards --path &amp;lt;REPO_PATH&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;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;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After you commit the resources, continue to &lt;a href=&#34;#step-2-delete-the-original-dashboards&#34;&gt;Step 2&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;export-as-a-json-resource-file&#34;&gt;Export as a JSON resource file&lt;/h3&gt;
&lt;p&gt;To export a dashboard as a JSON resource file, 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;p&gt;After you commit the file, continue to &lt;a href=&#34;#step-2-delete-the-original-dashboards&#34;&gt;Step 2&lt;/a&gt;.&lt;/p&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. Both classic and &lt;code&gt;v2&lt;/code&gt; JSON models are supported. For more information, refer to 
    &lt;a href=&#34;/docs/grafana/v13.2/visualizations/dashboards/build-dashboards/view-dashboard-json-model/&#34;&gt;Dashboard JSON model&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kind&lt;/code&gt;: Identifies the resource type. For example, dashboard.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;metadata&lt;/code&gt;: Contains the dashboard identifier &lt;code&gt;name&lt;/code&gt;, which must match the original dashboard UID so Git Sync can adopt it. You can find the identifier in the dashboard&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;step-2-delete-the-original-dashboards&#34;&gt;Step 2: Delete the original dashboards&lt;/h2&gt;
&lt;p&gt;Delete each original dashboard you&amp;rsquo;re migrating so Git Sync can take over its UID. Since the exported files keep the original UID, Git Sync can&amp;rsquo;t provision any dashboard if an unmanaged dashboard with the same UID (&lt;code&gt;metadata.name&lt;/code&gt;) still exists in Grafana.&lt;/p&gt;
&lt;p&gt;When you delete a dashboard, keep in mind the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You cannot restore deleted resources from the UI.&lt;/li&gt;
&lt;li&gt;Dashboard version history does not carry over.&lt;/li&gt;
&lt;li&gt;You need to reapply custom folder permissions. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.2/as-code/observability-as-code/git-sync/permissions-grafana/&#34;&gt;Git Sync permissions and access control&lt;/a&gt; for more details.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;manage-migrated-folders&#34;&gt;Manage migrated folders&lt;/h3&gt;
&lt;p&gt;You don&amp;rsquo;t need to delete your migrated folders, as Git Sync creates its own folders with new, path-derived UIDs. &lt;strong&gt;Don&amp;rsquo;t delete or recreate folders that contain alert rules or library panels&lt;/strong&gt;, since those resources are deleted permanently and Git Sync does not recreate them. See &lt;a href=&#34;#before-you-begin&#34;&gt;Before you begin&lt;/a&gt; for how to keep and set apart your original folders.&lt;/p&gt;
&lt;h2 id=&#34;step-3-validate-the-migration&#34;&gt;Step 3: Validate the migration&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Trigger a new pull to complete the sync. The dashboards are recreated as provisioned, with their original UIDs, so existing links keep working.&lt;/li&gt;
&lt;li&gt;Confirm each dashboard appears in the provisioned folder and opens correctly. It may take a few minutes for changes to appear; if they don&amp;rsquo;t, refresh the UI manually.&lt;/li&gt;
&lt;li&gt;Confirm that the alert rules and library panels in your original folders are still present and working.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After you&amp;rsquo;ve validated one folder, repeat the process for the next one until the migration is complete.&lt;/p&gt;
&lt;h2 id=&#34;preserve-links-to-the-original-folders&#34;&gt;Preserve links to the original folders&lt;/h2&gt;
&lt;p&gt;By default, Git Sync gives each synced folder a new UID derived from its path in the repository. This means links and URLs that point to your original folders keep pointing to the original folders, not the new provisioned ones.&lt;/p&gt;
&lt;p&gt;If you need existing folder links and URLs to resolve to the provisioned folders instead, you can pin a folder&amp;rsquo;s UID with a folder metadata file so Git Sync reuses the original folder&amp;rsquo;s UID.&lt;/p&gt;
&lt;h3 id=&#34;save-unsupported-resources&#34;&gt;Save unsupported resources&lt;/h3&gt;
&lt;p&gt;Because this option reuses the original folder&amp;rsquo;s UID, the synced folder collides with your existing unmanaged folder, and Git Sync can&amp;rsquo;t take over a UID that still belongs to an unmanaged folder, with the sync failing with a conflict.&lt;/p&gt;
&lt;p&gt;To avoid losing unsupported resources, complete these steps for each folder &lt;strong&gt;before&lt;/strong&gt; you sync:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a new folder and move all alert rules, library panels, and other unsupported resources out of the original folder into it.&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Move alert rules and library panels out of the folder &lt;strong&gt;before&lt;/strong&gt; you delete the folder, since Git Sync does not recreate alerts or library panels.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;Delete the original folder. Its dashboards should already be exported to the repository from &lt;a href=&#34;#step-1-export-the-resources-to-your-repository&#34;&gt;Step 1&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Reapply any custom permissions on the new provisioned folder, as folder permissions don&amp;rsquo;t carry over. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.2/as-code/observability-as-code/git-sync/permissions-grafana/&#34;&gt;Git Sync permissions and access control&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;reuse-the-original-folders-uid&#34;&gt;Reuse the original folder&amp;rsquo;s UID&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;Folder metadata requires the &lt;code&gt;provisioningFolderMetadata&lt;/code&gt; feature, which is enabled by default. If your administrator has disabled it, &lt;code&gt;metadata.name&lt;/code&gt; is ignored and folders always get a path-derived UID.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;To reuse an original folder&amp;rsquo;s UID, add a &lt;code&gt;_folder.json&lt;/code&gt; file to that folder&amp;rsquo;s directory in the repository:&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;ORIGINAL_FOLDER_UID&amp;gt;&amp;#34; },
  &amp;#34;spec&amp;#34;: { &amp;#34;title&amp;#34;: &amp;#34;&amp;lt;FOLDER_TITLE&amp;gt;&amp;#34; }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Where &lt;code&gt;&amp;lt;ORIGINAL_FOLDER_UID&amp;gt;&lt;/code&gt; is the UID of your existing folder. You can find it in the folder&amp;rsquo;s URL.&lt;/p&gt;
]]></content><description>&lt;h1 id="migrate-existing-dashboards-to-git-sync">Migrate existing dashboards to Git Sync&lt;/h1>
&lt;div class="admonition admonition-note">&lt;blockquote>&lt;p class="title text-uppercase">Note&lt;/p>&lt;p>At the moment Git Sync only manages dashboards and folders. Alerts, data sources, and library panels are &lt;strong>not&lt;/strong> supported yet. Refer to &lt;a href="#before-you-begin">Before you begin&lt;/a> for details.&lt;/p></description></item></channel></rss>