# Migrieren Ihrer Repositorys von GitLab zu GitHub

Führen Sie eine Testversion aus, und migrieren Sie dann Ihre Repositorys von GitLab zu GitHub.

## Prerequisites

* Sie müssen alle vorherigen Phasen dieses Handbuchs abgeschlossen haben.
* Das GitLab-Projekt muss für Exporte aktiviert sein. Siehe [Aktivieren der Projektexport](https://docs.gitlab.com/administration/settings/import_and_export_settings/#enable-project-export)[- und Sidekiq-Konfiguration für Importe](https://docs.gitlab.com/administration/sidekiq/configuration_for_imports/) in der GitLab-Dokumentation.
* Stellen Sie sicher, dass Sie die zu migrierenden Daten und die bekannten Supportbeschränkungen des Importer verstehen. Weitere Informationen finden Sie unter [Grundlegendes zu Migrationen von GitLab zu GitHub](/de/migrations/using-github-enterprise-importer/migrate-from-gitlab/understand-migrations).
* Es ist zwar nicht erforderlich, die Arbeit während der Produktionsmigration zu unterbrechen, es wird aber empfohlen. Der Importer unterstützt keine Deltamigrationen, sodass Änderungen, die während der Migration vorgenommen werden, nicht migriert werden. Wenn du dich dafür entscheidest, die Arbeit während der Produktionsmigration nicht zu unterbrechen, musst du diese Änderungen manuell migrieren.

## Ausführen einer Testversion

Um Probleme aufzudecken, die für Ihr Unternehmen möglicherweise einzigartig sind, empfehlen wir dringend, eine Testausführung Ihrer Migration durchzuführen. Bei einer Testversion lernen Sie Folgendes:

* Gibt an, ob die Migration für ein bestimmtes Repository erfolgreich abgeschlossen werden kann.
* Gibt an, ob Sie das migrierte Repository wieder in einen funktionsfähigen Zustand zurückholen können.
* Wie lange eine Migration dauern wird.

Testläufe können jederzeit ausgeführt werden, und die Arbeit muss während der Migration nicht angehalten werden. Um die Zeit zu verkürzen, die zum Abschließen deiner Testmigration benötigt wird, kannst du die Batches für die Testläufe so planen, dass sie nacheinander ausgeführt werden. Benutzer\*innen dieser Repositorys können die Ergebnisse dann selbst überprüfen.

1. Erstelle eine Testorganisation für deine Testmigrationsvorgänge.

   Du kannst eine einzelne Organisation für alle Testläufe verwenden, oder du kannst eine Testorganisation für jede vorgesehene Zielorganisation erstellen. Erwäge, am Ende der Organisationsnamen `-sandbox` einzufügen, um zu verdeutlichen, dass die Organisationen nur für die Migrationsvalidierung und nicht für die Produktion vorgesehen sind. Du kannst die Testorganisationen löschen, wenn du fertig bist.

2. Führe die Testmigrationsvorgänge aus.

3. Vergewissern Sie sich, dass Sie die Nachverfolgungsaufgaben in [Nachverfolgungsaufgaben](/de/migrations/using-github-enterprise-importer/migrate-from-gitlab/follow-up-tasks) ausführen können.

4. Bitte die Benutzer\*innen, die Ergebnisse der Migrationsvorgänge zu überprüfen.

5. Behebe alle Probleme, die durch die Testmigrationsvorgänge aufgedeckt wurden.

6. Lösche optional die Testorganisation.

## Migrieren eines einzelnen Repositorys

Um ein Repository zu migrieren, verwenden Sie den `gh gl2gh migrate-repo` Befehl.

```shell copy
gh gl2gh migrate-repo \
  --gitlab-server-url GITLAB_SERVER_URL \
  --gitlab-group SOURCE_GROUP \
  --gitlab-project SOURCE_PROJECT \
  --github-org DESTINATION \
  --github-repo NEW_REPO_NAME \
  --use-github-storage
```

Ersetze die Platzhalter im obigen Befehl durch die folgenden Werte.

| Platzhalter         | Wert                                                                                                                                                                                |
| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| GITLAB\_SERVER\_URL | Die vollständige URL Ihrer GitLab-Instanz, z `https://gitlab.com` . B. oder `https://gitlab.example.com`.                                                                           |
| SOURCE\_GROUP       | Der vollständige Pfad der Gruppe oder des Namespaces, die das Projekt enthält. Verwenden Sie für geschachtelte Untergruppen den vollständigen Pfad, z `parent-group/subgroup`. B. . |
| SOURCE\_PROJECT     | Das GitLab-Projekt, das migriert werden soll.                                                                                                                                       |
| ZIEL                | Die Zielorganisation auf GitHub.                                                                                                                                                    |
| NEW\_REPO\_NAME     | Der Name für das Repository auf GitHub.                                                                                                                                             |

Wenn Sie dies nicht verwenden GitHub-owned blob storage, lesen Sie [Konfigurieren des Blobspeichers](/de/migrations/using-github-enterprise-importer/migrate-from-gitlab/configure-storage).

### Zusätzliche Argumente

| Argument                                  | Description                                                                                                                                                                                                                                                                                                                                        |
| ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--target-repo-visibility`                | Legt die Sichtbarkeit des neuen Repositorys auf `public`, , `private`oder `internal`. Wird standardmäßig auf `private` festgelegt.                                                                                                                                                                                                                 |
| `--target-api-url TARGET-API-URL`         | Wenn du zu GHE.com migrierst, füge `--target-api-url TARGET-API-URL` hinzu, wobei TARGET-API-URL die Basis-API-URL für die Unterdomäne deines Unternehmens ist. Beispiel: `https://api.octocorp.ghe.com`                                                                                                                                           |
| `--target-uploads-url TARGET-UPLOADS-URL` | Wenn Sie zu GHE.com und verwenden GitHub-owned blob storage, fügen Sie `--target-uploads-url TARGET-UPLOADS-URL`außerdem hinzu, wobei TARGET-UPLOADS-URL die API-URL für die Basisuploads-API für die Unterdomäne Ihres Unternehmens ist. Beispiel: `https://uploads.octocorp.ghe.com`. Standardmäßig wird `https://uploads.github.com` verwendet. |
| `--no-ssl-verify`                         | Deaktiviert die SSL-Überprüfung, wenn die GL2GH extension Gespräche mit Ihrer GitLab-Instanz geführt werden. Verwenden Sie dies nur, wenn Ihre GitLab-Instanz ein selbstsigniertes Zertifikat verwendet. Alle anderen Schritte überprüfen weiterhin SSL.                                                                                           |
| `--archive-url URL`                       | Importiert ein zuvor exportiertes Archiv aus einer URL, anstatt das Projekt erneut aus GitLab zu exportieren.                                                                                                                                                                                                                                      |
| `--archive-path PATH`                     | Importiert ein zuvor exportiertes Archiv aus einem lokalen Dateipfad, anstatt das Projekt erneut aus GitLab zu exportieren.                                                                                                                                                                                                                        |
| `--keep-archive`                          | Behält das Exportarchiv lokal bei, anstatt es nach einem erfolgreichen Upload zu löschen.                                                                                                                                                                                                                                                          |

## Generieren eines Migrationsskripts

Wenn Sie mehrere Repositorys GitHub Enterprise Cloud gleichzeitig migrieren möchten, verwenden Sie die GitHub CLI Zum Generieren eines Migrationsskripts. Das resultierende Skript enthält einen `migrate-repo` Befehl pro Repository.

Führe den Befehl `gh gl2gh generate-script` aus, um ein Migrationsskript zu generieren.

```shell copy
gh gl2gh generate-script \
  --gitlab-server-url GITLAB_SERVER_URL \
  --github-org DESTINATION \
  --output FILENAME \
  --use-github-storage
```

Ersetze die Platzhalter im obigen Befehl durch die folgenden Werte.

| Platzhalter         | Wert                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| GITLAB\_SERVER\_URL | Die vollständige URL Ihrer GitLab-Instanz, z `https://gitlab.com` . B. oder `https://gitlab.example.com`.                                                                                                                                                                                                                                                                                                                                                                                        |
| ZIEL                | Die Zielorganisation auf GitHub.                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| FILENAME            | Ein Dateiname für das resultierende Migrationsskript<br><br>Wenn du das Terminal verwendest, legst du als Erweiterung `.ps1` fest, da für das generierte Skript PowerShell ausgeführt werden muss. Du kannst PowerShell für [Mac](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.2) oder [Linux](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-linux?view=powershell-7.2) installieren. |

Standardmäßig enthält das Skript jedes Projekt, auf das das Token zugreifen kann. Um das Skript zu beschränken, fügen Sie `--gitlab-group GROUP``--gitlab-group GROUP --gitlab-project PROJECT` es oder für ein einzelnes Projekt hinzu.

Wenn Sie dies nicht verwenden GitHub-owned blob storage, lesen Sie [Konfigurieren des Blobspeichers](/de/migrations/using-github-enterprise-importer/migrate-from-gitlab/configure-storage).

### Zusätzliche Argumente

| Argument                                  | Description                                                                                                                                                                                                                                                                                                                                        |
| ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--target-api-url TARGET-API-URL`         | Wenn du zu GHE.com migrierst, füge `--target-api-url TARGET-API-URL` hinzu, wobei TARGET-API-URL die Basis-API-URL für die Unterdomäne deines Unternehmens ist. Beispiel: `https://api.octocorp.ghe.com`                                                                                                                                           |
| `--target-uploads-url TARGET-UPLOADS-URL` | Wenn Sie zu GHE.com und verwenden GitHub-owned blob storage, fügen Sie `--target-uploads-url TARGET-UPLOADS-URL`außerdem hinzu, wobei TARGET-UPLOADS-URL die API-URL für die Basisuploads-API für die Unterdomäne Ihres Unternehmens ist. Beispiel: `https://uploads.octocorp.ghe.com`. Standardmäßig wird `https://uploads.github.com` verwendet. |

### Überprüfen des Migrationsskripts

Nachdem du das Skript generiert hast, überprüfst du die Datei, und bearbeitest ggf. das Skript.

* Wenn du einige Repositorys nicht migrieren möchtest, kannst du die entsprechenden Zeilen löschen oder auskommentieren.
* Wenn Repositorys in der Zielorganisation einen anderen Namen erhalten sollen, aktualisiere den Wert für das entsprechende Flag `--github-repo`.
* Wenn Sie die Sichtbarkeit eines neuen Repositorys ändern möchten, fügen Sie das entsprechende `--target-repo-visibility` Flag hinzu oder aktualisieren sie.

### Migrieren von Repositorys

Wenn die Testausführung erfolgreich war und Sie die Nachverfolgungsaufgaben ausführen konnten, können Sie mit der tatsächlichen Migration fortfahren.

> \[!WARNING] Es wird empfohlen, die Arbeit in den Repositories, die Sie migrieren, zu stoppen. Alle Änderungen, die während oder nach der Migration vorgenommen wurden, müssen manuell migriert werden.

Führen Sie das generierte Skript aus. Ersetze FILENAME in den folgenden Befehlen durch den Dateinamen, den du beim Generieren des Skripts angegeben hast.

* Wenn du ein Terminal verwendest, gibst du `./` ein.

  ```shell copy
  ./FILENAME
  ```

* Wenn du PowerShell verwendest, gibst du `.\` ein.

  ```shell copy
  .\FILENAME
  ```