Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020
In diesem Artikel erfahren Sie, wie Sie ein vorhandenes Git-Repository aus GitHub, Bitbucket, GitLab oder einem anderen Speicherort in ein neues oder ein leeres vorhandenes Repository in Ihrem Azure DevOps-Projekt importieren.
Voraussetzungen
| Kategorie | Anforderungen |
|---|---|
| Projektzugriff | Mitglied eines Projekts. |
| Erlaubnisse | - Code in einem privaten Projekt anzeigen: Mindestens Basic-Zugriff. - Code in privaten Projekten klonen oder dazu beitragen: Mitglied der Sicherheitsgruppe Contributors oder entsprechende Berechtigungen im Projekt. – Verzweigungs- oder Repository-Berechtigungen festlegen: Berechtigungen Berechtigungen verwalten für die Verzweigung oder das Repository. - Standardbranch ändern: Berechtigungen Richtlinien bearbeiten für das Repository. - Ein Repository importieren: Mitglied der Sicherheitsgruppe Projektadministratoren oder auf Git-Projektebene die Berechtigung Repository erstellen auf Zulassen festgelegt. Weitere Informationen finden Sie unter Festlegen von Git-Repositoryberechtigungen. |
| Dienste | Repositorys aktiviert. |
| Werkzeuge | Wahlfrei. Verwenden von az repos-Befehlen: Azure DevOps CLI. |
Hinweis
In öffentlichen Projekten haben Benutzer*innen mit Beteiligten -Zugriff vollen Zugriff auf Azure Repos, einschließlich Anzeigen, Klonen und Beitragen zum Code.
| Kategorie | Anforderungen |
|---|---|
| Projektzugriff | Mitglied eines Projekts. |
| Erlaubnisse | - Code anzeigen: Mindestens Basis-Zugriff. - Code klonen oder dazu beitragen: Mitglied der Sicherheitsgruppe Beitragende oder entsprechende Berechtigungen im Projekt. |
| Dienste | Repositorys aktiviert. |
Importieren in ein neues Repository
Führen Sie die folgenden Schritte aus, um in ein neues Repository zu importieren:
Hinweis
Wenn der Import des Repositorys abgeschlossen ist, legt Azure DevOps die Standardverzweigung für dieses importierte Repository fest. Wenn das importierte Repository eine Verzweigung mit dem Namen mainenthält, wird sie als Standardverzweigung festgelegt, andernfalls wird die erste Verzweigung (in alphabetischer Reihenfolge) des importierten Repositorys als Standard festgelegt.
Melden Sie sich in Ihrem Browser bei Ihrer Organisation an, und wählen Sie Repos>Dateien aus.
Wählen Sie in der Dropdownliste der Repositorys Repository importieren aus.
Geben Sie die Klon-URL des Quell-Repositorys und einen Namen für Ihr neues Git-Repository ein.
- Wählen Sie "Repository importieren" aus.
Das Repository wird importiert.
Importieren in ein vorhandenes leeres Repository
Wählen Sie auf der Seite Dateien des leeren Git-Repositorys Importieren aus, und geben Sie die Klon-URL ein. Geben Sie Anmeldeinformationen an, wenn für das Quell-Repository eine Authentifizierung erforderlich ist.
Hinweis
Das Importfeature deaktiviert die automatisierte Verknüpfung für Arbeitselemente, die in einem Commitkommentar erwähnt werden, da die Arbeitselement-IDs im Zielprojekt möglicherweise nicht mit denen im Quellprojekt identisch sind. Die automatische Verknüpfung für Arbeitselemente, die in einem Commit erwähnt werden, kann wieder aktiviert werden, indem Sie zu Einstellungen, Versionskontrolle navigieren, Ihr Repository auswählen und Optionen auswählen. Weitere Informationen zum Verknüpfen von Commits mit Arbeitselementen finden Sie unter Verknüpfen von Arbeitselementen mit Commits.
Manuelles Importieren eines Repositorys mithilfe der „az repos“-CLI
Sie können az repos import verwenden, um ein Repository in Ihr Azure DevOps-Projekt zu importieren.
Sie müssen zuerst das Repository in Azure DevOps erstellen, bevor Sie ein Git-Repository importieren können. Außerdem muss das Repository, das Sie erstellen, leer sein. Informationen zum Erstellen eines Repositorys finden Sie unter Erstellen Ihres Git-Repositorys in Azure Repos.
az repos import create --git-source-url
[--detect {false, true}]
[--git-service-endpoint-id]
[--org]
[--project]
[--repository]
[--requires-authorization]
[--subscription]
[--user-name]
Parameter
| Parameter | Beschreibung |
|---|---|
git-source-url |
Erforderlich. URL des zu importierenden Git-Quellrepositorys. |
detect |
Wahlfrei. Organisation automatisch erkennen. Zulässige Werte: false, true. |
git-service-endpoint-id |
Wahlfrei. Dienstendpunkt für die Verbindung mit einem externen Endpunkt. |
org, organization |
Azure DevOps-Organisations-URL. Sie können die Standardorganisation mit az devops configure -d organization=<ORG_URL> konfigurieren.
Erforderlich, wenn nicht als „Standard“ konfiguriert oder über „git config“ übernommen. Beispiel: https://dev.azure.com/MyOrganizationName/. |
project, p |
Name oder ID des Projekts. Sie können das Standardprojekt mit az devops configure -d project=<NAME_OR_ID>konfigurieren.
Erforderlich, wenn nicht als „Standard“ konfiguriert oder über „git config“ übernommen. |
repository |
Name oder ID des Repositorys, in dem die Importanforderung erstellt werden soll. |
requires-authorization |
Flag, um anzuzeigen, ob das Git-Quellrepository privat ist. Wenn Sie Authentifizierung anfordern, generieren Sie ein Authentifizierungstoken im Quellrepository, und legen Sie die Umgebungsvariable AZURE_DEVOPS_EXT_GIT_SOURCE_PASSWORD_OR_PAT auf den Wert des Tokens fest. Zur Verbesserung der Sicherheit empfehlen wir die Verwendung von Microsoft Entra-ID-Token, wenn möglich. Anschließend enthält die Importanforderung die Authentifizierung. |
subscription |
Der Name oder die ID des Abonnements. Sie können das standardmäßig verwendete Abonnement mittels az account set -s <NAME_OR_ID> konfigurieren. |
user-name |
Anzugebender Benutzername, wenn das Git-Repository privat ist. |
Beispiel
Der folgende Befehl importiert das öffentliche Repository fabrikam-open-source in das leere Git-Repository fabrikam-open-source für die Standardkonfiguration: az devops configure --defaults organization=https://dev.azure.com/fabrikamprime project="Fabrikam Fiber".
az repos import create --git-source-url https://github.com/fabrikamprime/fabrikam-open-source --repository fabrikam-open-source
{
"detailedStatus": {
"allSteps": [
"Processing request",
"Analyzing repository objects",
"Storing objects",
"Storing index file",
"Updating references",
"Import completed successfully"
],
"currentStep": 6,
"errorMessage": null
},
"importRequestId": 8,
"parameters": {
"deleteServiceEndpointAfterImportIsDone": null,
"gitSource": {
"overwrite": false,
"url": "https://github.com/fabrikamprime/fabrikam-open-source"
},
"serviceEndpointId": null,
"tfvcSource": null
},
"repository": {
"defaultBranch": null,
"id": "0f6919cd-a4db-4f34-a73f-2354114a66c4",
"isDisabled": false,
"isFork": null,
"name": "new-empty-repo",
"parentRepository": null,
"project": {
"abbreviation": null,
"defaultTeamImageUrl": null,
"description": "Guidance and source control to foster a vibrant ecosystem for Fabrikam Fiber applications and extensions.",
"id": "56af920d-393b-4236-9a07-24439ccaa85c",
"lastUpdateTime": "2021-05-24T21:52:14.95Z",
"name": "Fabrikam Fiber",
"revision": 438023732,
"state": "wellFormed",
"url": "https://dev.azure.com/fabrikamprime/_apis/projects/56af920d-393b-4236-9a07-24439ccaa85c",
"visibility": "private"
},
"remoteUrl": "https://fabrikamprime@dev.azure.com/fabrikamprime/Fabrikam%20Fiber/_git/fabrikam-open-source",
"size": 12477,
"sshUrl": "git@ssh.dev.azure.com:v3/kelliott/Fabrikam%20Fiber/new-empty-repo",
"url": "https://dev.azure.com/fabrikamprime/56af920d-393b-4236-9a07-24439ccaa85c/_apis/git/repositories/0f6919cd-a4db-4f34-a73f-2354114a66c4",
"validRemoteUrls": null,
"webUrl": "https://dev.azure.com/fabrikamprime/Fabrikam%20Fiber/_git/fabrikam-open-source"
},
"status": "completed",
"url": "https://dev.azure.com/fabrikamprime/Fabrikam%20Fiber/_apis/git/repositories/0f6919cd-a4db-4f34-a73f-2354114a66c4/importRequests/8"
}
Manuelles Importieren eines Repositorys mithilfe der Git-CLI
Klonen Sie das Quellrepository mit der Option
barein einen temporären Ordner auf Ihrem Computer, wie im folgenden Befehlszeilenbeispiel gezeigt, und navigieren Sie dann zum Ordner des Repositorys. Beim Klonen mit der Optionbareumfasst der Ordnername das Suffix.git. In diesem Beispiel isthttps://github.com/contoso/old-contoso-repo.gitdas Quellrepository, das manuell importiert werden soll.git clone --bare https://github.com/contoso/old-contoso-repo.git cd old-contoso-repo.gitErstellen Sie ein Ziel-Repository , und notieren Sie sich die Klon-URL. In diesem Beispiel ist
https://dev.azure.com/contoso-ltd/MyFirstProject/_git/new-contoso-repodie URL für das neue Zielrepository.Führen Sie den folgenden Befehl aus, um das Quellrepository in das Zielrepository zu kopieren.
git push --mirror https://dev.azure.com/contoso-ltd/MyFirstProject/_git/new-contoso-repoWarnung
Durch die Verwendung von
--mirrorwerden alle Branches im Ziel-Repository überschrieben, einschließlich des Löschens von Branches, die im Quell-Repository nicht vorhanden sind.Wenn das Quell-Repository über LFS-Objekte verfügt, rufen Sie sie ab, und kopieren Sie sie aus dem Quell-Repository in das Ziel-Repository.
git lfs fetch origin --all git lfs push --all https://dev.azure.com/contoso-ltd/MyFirstProject/_git/new-contoso-repoLöschen Sie den temporären Ordner, indem Sie die folgenden Befehle ausführen.
cd .. rm -rf old-contoso-repo.git
Häufig gestellte Fragen (FAQs)
Obwohl Importe am häufigsten erfolgreich sind, können die folgenden Bedingungen Probleme verursachen.
- Was geschieht, wenn mein Quellrepository mit Zwei-Faktor-Authentifizierung geschützt ist?
- Was geschieht, wenn mein Quell-Repository multi_ack nicht unterstützt?
- Kann ich aus früheren lokalen Versionen importieren?
- Kann ich MSA-basierte Anmeldeinformationen verwenden?
- Kann ich aus TFVC importieren?
- Was geschieht, wenn mein Quellrepository Git LFS-Objekte enthält?
F: Was geschieht, wenn mein Quell-Repository hinter der zweistufigen Authentifizierung liegt?
A: Der Importdienst verwendet REST-APIs zum Überprüfen und Auslösen des Imports und kann nicht direkt mit Repositorys funktionieren, die zweistufige Authentifizierung erfordern.
Die meisten Git-Hostinganbieter unterstützen Authentifizierungstoken, die dem Importdienst bereitgestellt werden können:
Microsoft Entra-ID-Token (empfohlen): Microsoft Entra-ID-Token bieten eine bessere Sicherheit und sind die empfohlene Authentifizierungsmethode. Sie können diese Token über Folgendes abrufen:
Azure CLI (für Entwicklung/Tests):
az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query "accessToken" --output tsvService Principal (für Produktions-/automatisierte Szenarien):
- Registrieren einer Anwendung in Microsoft Entra ID
- Erstellen eines geheimen Clientschlüssels für die Anwendung
- Erteilen der anwendung entsprechenden Berechtigungen in Azure DevOps
- Verwenden Sie die Anmeldeinformationen des Dienstprinzipals, um Token programmgesteuert abzurufen.
Persönliche Zugriffstoken (alternative):GitHub und Azure DevOps unterstützen auch persönliche Zugriffstoken.
F: Was geschieht, wenn mein Quell-Repository multi_ack nicht unterstützt?
A: Der Importdienst verwendet die multi_ack-Funktion des Git-Protokolls während des Imports. Wenn das Quell-Repository diese Funktion nicht bereitstellt, kann der Import aus der angegebenen Quelle fehlschlagen. Dieser Fehler kann beim Erstellen einer Importanforderung oder während des Imports auftreten.
F: Kann ich aus früheren Versionen importieren?
A: Wenn sich das Git-Quell-Repository in einer lokalen Version vor 2017 RTM befindet, schlägt der Import aufgrund eines Vertragskonflikts zwischen den neuesten Azure DevOps und früheren Versionen fehl.
F: Kann ich MSA-basierte Anmeldeinformationen verwenden?
A: Leider funktionieren MSA (Microsoft-Konto)-basierte Anmeldeinformationen nicht. Der Importdienst basiert auf der Standardauthentifizierung, um mit dem Quellrepository zu kommunizieren. Wenn der von Ihnen verwendete Benutzername und das verwendete Kennwort nicht die grundlegende Authentifizierung sind, schlägt die Authentifizierung und der Import fehl. Eine Möglichkeit, um zu überprüfen, ob der von Ihnen verwendete Benutzername/das verwendete Kennwort die grundlegende Authentifizierung ist, besteht darin, Git zum Klonen Ihres Repositorys mit dem folgenden Format zu verwenden:
git clone https://<<username>>:<<password>>@<<remaining clone Url>>
F: Kann ich aus TFVC importieren?
A: Sie können Code aus einem vorhandenen TFVC-Repository zu einem neuen Git-Repository innerhalb desselben Kontos migrieren. Während die Migration zu Git viele Vorteile hat, ist es ein beteiligter Prozess für große TFVC-Repositorys und -Teams. Zentralisierte Versionskontrollsysteme wie TFVC verhalten sich grundlegend anders als Git. Der Wechsel beinhaltet wesentlich mehr, als nur neue Befehle zu lernen. Es ist eine störende Änderung, die eine sorgfältige Planung erfordert. Weitere Informationen finden Sie unter Importieren aus TFVC in Git.
F: Was geschieht, wenn mein Quell-Repository Git LFS-Objekte enthält?
A: Git-Import importiert keine Git LFS-Objekte.
LFS-Objekte können mithilfe der folgenden Schritte verschoben werden:
- Importieren Sie das Repository mithilfe des Features „Repository importieren“ in Azure DevOps. Diese Aktion kopiert alle Git-Objekte aus der Quelle in Azure DevOps, wodurch auch die LFS-Zeiger importiert werden, die Git-Objekte sind, aber nicht die LFS-Dateien
Um über die LFS-Dateien zu wechseln, benötigen Sie sowohl Git.exe als auch den LFS-Client im selben Feld und Zugriff auf das Quell-Repository und das Ziel-Repository.
- Klonen Sie das importierte Repository aus Azure DevOps in das lokale System. Klon funktioniert, aber bei der Prüfung von LFS-Dateien tritt ein Fehler auf.
- Fügen Sie das Quell-Repository als Remote hinzu, z. B. "Quelle"
- Ausführen
git lfs fetch source --all, wodurch alle LFS-Dateien aus der Quelle in Ihr lokales Repository übernommen werden - Angenommen, das Ziel-VSTS-Repository ist Ihr "Ziel"-Remote
- Führen Sie
git lfs push target --allaus.
F: Kann ich Updates importieren, wenn sich die Quelle später ändert?
A: Der Importdienst dient zum anfänglichen Importieren eines gesamten Repositorys. Um spätere Änderungen zu spiegeln, benötigen Sie einen lokalen Klon des Repositorys, bei dem die Remotes sowohl auf die Quelle als auch das Ziel konfiguriert sind.
Sie können Änderungen mit den folgenden Befehlen synchronisieren.
Wir behandeln den Azure Repos-Import als origin und das ursprüngliche Repository als upstream.
git clone --bare <Azure-Repos-clone-URL>.git
cd <name-of-repo>
git remote add --mirror=fetch upstream <original-repo-URL>
git fetch upstream --tags
git push origin --all