# Single repository recovery

**GitProtect allows organizations to restore individual Azure DevOps repositories along with their associated metadata. The process ensures repository integrity and consistency while minimizing impact on other projects, supporting efficient disaster recovery, migration, and point-in-time restore operations.**

***

## Recovery process

The following steps demonstrate how to quickly restore a single **Azure DevOps** repository using **GitProtect Management Service**.

{% stepper %}
{% step %}
Get into the restore view using the following method:

1. Open the **Azure DevOps** tab (**DevOps** > **Azure DevOps**), then click the **Explore** button next to the organization whose backup you want to restore (explore <img src="https://696332517-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtsE6XtJyUIEKVdSxPlS3%2Fuploads%2FlznOQewoKxgR6fVymPw3%2Fimage.png?alt=media&#x26;token=ae42e612-0146-41f9-a50f-6977b4a70609" alt="" data-size="original"> icon in list view).
2. Go to the **Repositories** tab and search for the repository you want to restore, then click the restore ![](https://696332517-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtsE6XtJyUIEKVdSxPlS3%2Fuploads%2F579nNSK9YQ7jE5lg7wHH%2Fimage.png?alt=media\&token=81351588-9730-4e41-ac66-635324ca58d5) icon in the action menu of that repository.

<figure><img src="https://696332517-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtsE6XtJyUIEKVdSxPlS3%2Fuploads%2Fn1sFCfN3kf37Yi6ER0dm%2Fimage.png?alt=media&#x26;token=1a73950d-03bb-4889-bed4-9ed72acc391e" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Select the backup plan from which you want to restore data. Click the drop-down under **Backup plans** section and choose one of the plans from the list.

<figure><img src="https://696332517-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtsE6XtJyUIEKVdSxPlS3%2Fuploads%2FBKnKktzyzcvkioqKH2gR%2Fimage.png?alt=media&#x26;token=f5fd9236-8361-4006-8cf4-c77f05d7168f" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Choose the backup version from all the backups that have already been performed — select the desired date and click the **Restore** button.

<figure><img src="https://696332517-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtsE6XtJyUIEKVdSxPlS3%2Fuploads%2FuazJkG8XUb5L8TCpNy9m%2Fimage.png?alt=media&#x26;token=5fa6ca40-43d9-464c-aee6-b9134d977ab9" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Select the data available to restore and click **Restore selected** or **Restore all** to proceed.

<figure><img src="https://696332517-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtsE6XtJyUIEKVdSxPlS3%2Fuploads%2FV2j4gz3Y7lrDquhDZEAM%2Fimage.png?alt=media&#x26;token=0f3b6a74-a458-4cdc-b325-8eff57c61e27" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Select the destination for the recovery and click **Next**.&#x20;

{% hint style="info" %}
You can choose any device or organization registered in **GitProtect** (you can find more information about cross-recovery in **Useful links and items section**).
{% endhint %}

<figure><img src="https://696332517-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtsE6XtJyUIEKVdSxPlS3%2Fuploads%2FsQEcFSpCvmeb0PEUzXwc%2Fimage.png?alt=media&#x26;token=875227e5-f21c-4a56-ad34-89a62849754f" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
In the **Data to restore** section at the top, you can select which of the previously chosen available data you want to restore.

<figure><img src="https://696332517-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtsE6XtJyUIEKVdSxPlS3%2Fuploads%2FXMgT83xcaKczbWvVBE7W%2Fimage.png?alt=media&#x26;token=b7156c46-0ebf-4471-be7b-de2b4150d4bf" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
In the **Restore to** section, you can change the previously selected recovery destination if needed.

<figure><img src="https://696332517-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtsE6XtJyUIEKVdSxPlS3%2Fuploads%2FvulDPoZGodwAdC8dsrnk%2Fimage.png?alt=media&#x26;token=f8fd954e-57a6-43b6-885f-ba5392933bf7" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
In the **Throttling prevention** section, you can add additional **DevOps** accounts to avoid throttling.

{% hint style="warning" %}
To use additional organization accounts, you must first add them in the organization settings (organization view > **Edit**).
{% endhint %}

<figure><img src="https://696332517-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtsE6XtJyUIEKVdSxPlS3%2Fuploads%2F81MDbDq6MzLqmCpWbIBO%2Fimage.png?alt=media&#x26;token=9a1d36a8-ce1d-469c-896c-25118350ee07" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Configure the recovery destination settings, depending on where the backup will be restored.

#### Restore to a Git organization:

1. Select the target organization, then select or create a new project (where applicable).
2. In **Restore settings**, you can set a unique, custom name for the repository (or use the custom name automatically generated by **GitProtect**).

{% hint style="success" %}
Restoring never overwrites existing repositories in the organization — if you do not set a new name for the restored repository, it keeps its original name with an automatically generated suffix.
{% endhint %}

{% hint style="danger" %}
When you set a custom name for the repository, and a repository with that name already exists in the specified organization, **the recovery will fail**.
{% endhint %}

3. If you are restoring your repository to a different **Git** organization than the original (for example, **GitHub**), in addition to setting a custom name, you can choose whether to add a label to the restored elements (where applicable).
4. Check which worker is set as the default for recovery and change it if necessary.
5. If needed, you can also adjust the bandwidth.

<figure><img src="https://696332517-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtsE6XtJyUIEKVdSxPlS3%2Fuploads%2FKB1Y8ufH6NfsNO6v6O1A%2Fimage.png?alt=media&#x26;token=1f1ffc48-7809-496b-a3fd-2ae2b8f7c139" alt=""><figcaption></figcaption></figure>

#### Restore to a device:

{% hint style="warning" %}
To restore a repository to a local device, you must have a **Git** client and the **GitProtect** worker installed on that device (you can find more information about workers in **Useful links and items** section).
{% endhint %}

{% hint style="danger" %}
You can restore **only the repository** (without metadata) when restoring data to local resources.
{% endhint %}

1. Select the destination device (a registered device).
2. Make sure the device where you want to restore data has the **Git** client added to the PATH environment variable. The PATH variable is usually configured automatically after **Git** installation (a system restart may be required) — if it isn’t, you will have to configure it manually.

{% hint style="info" %}
To configure the PATH variable in **Windows**, open the environment variables, select the PATH variable, and click the **Edit** button. Copy the path to the git.exe file and add it to the PATH variable.
{% endhint %}

3. Specify the restoration directory and configure other options (for example, whether to overwrite existing data or reduce bandwidth). If needed, you can create a new restoration folder on the selected drive from the **Management Service** level.

<figure><img src="https://696332517-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtsE6XtJyUIEKVdSxPlS3%2Fuploads%2FMpLmK6GEIz1i5yPCEymm%2Fimage.png?alt=media&#x26;token=26dff9c2-e3fd-4752-8699-5e6e40df94dc" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
After defining all parameters, click the **Restore** button to begin the recovery process. When the process is complete, a new repository/folder will be created in your organization/on your device. You can monitor the restoration process in the **Tasks** tab.
{% endstep %}
{% endstepper %}

***

## Useful links and items

{% content-ref url="../../../../deployment-and-configuration/gitprotect-worker" %}
[gitprotect-worker](https://helpcenter.gitprotect.io/deployment-and-configuration/gitprotect-worker)
{% endcontent-ref %}

{% content-ref url="../../general/cross-recovery-for-devops-organizations" %}
[cross-recovery-for-devops-organizations](https://helpcenter.gitprotect.io/backup-and-recovery/devops/general/cross-recovery-for-devops-organizations)
{% endcontent-ref %}

{% content-ref url="../../general/lfs-recovery-for-devops-organizations" %}
[lfs-recovery-for-devops-organizations](https://helpcenter.gitprotect.io/backup-and-recovery/devops/general/lfs-recovery-for-devops-organizations)
{% endcontent-ref %}

{% content-ref url="../../general/wiki-recovery-for-devops-organizations" %}
[wiki-recovery-for-devops-organizations](https://helpcenter.gitprotect.io/backup-and-recovery/devops/general/wiki-recovery-for-devops-organizations)
{% endcontent-ref %}

{% content-ref url="../../../../risk-and-compliance-management/throttling-prevention" %}
[throttling-prevention](https://helpcenter.gitprotect.io/risk-and-compliance-management/throttling-prevention)
{% endcontent-ref %}
