Vielleicht haben Sie schon lange über Git gelesen und verwenden es für Ihre privaten Projekte. Vielleicht möchten Sie die TFS-Versionskontrolle Ihres Projekts auf Git umstellen, entweder mit TFS Git oder anderswo, wissen aber nicht, wie. Oder vielleicht haben Sie Dennis Doomens Beitrag über "Warum Sie TFS aufgeben und Git übernehmen sollten" gelesen und gedacht: "Ich muss jetzt wirklich umsteigen, aber wie?" Wenn Sie TFS verwenden, haben Sie wahrscheinlich eine Historie, die Sie auch in Git haben möchten.
Dieser Beitrag basiert auf dem Beitrag 'TFS to Git migration: step by step' von Natalia An, den Sie hier finden können. Im Folgenden finden Sie eine aktuelle Version aller Schritte, die für unsere Projekte funktioniert.
In diesem Beitrag erfahren Sie, wie Sie Ihre TFS-Versionsverwaltung Schritt für Schritt zu Git migrieren und dabei den Verlauf beibehalten. Bei der Migration wird die Historie mitgenommen, aber nicht die Zweige in TFS.
Dieser Beitrag war nicht möglich ohne die Hilfe von ALM MVP Terje Sandstrøm.
Voraussetzungen
Die folgenden Tools werden verwendet:
- Git für Windows https://git-scm.com/download/win
- Git TF
- Sie können chocolatey verwenden, um dieses Tool zu installieren. Folgen Sie einfach den hier beschriebenen Schritten: https://chocolatey.org/ Website
- Type:
cinst Git-TF, um Git TF zu installieren
- Prüfen Sie, ob Git TF zu Ihren Systempfadvariablen hinzugefügt wurde, indem Sie die exe ausführen: git tf. Das Ergebnis sollte wie folgt aussehen:

- Ich verwende gerne die Git Shell, die Sie durch die Installation von GitHub für Windows erhalten können. GitHub Desktop
- Optional: IFix (von Terje Sandstrøm) kann verwendet werden, um die Ignore-Datei zu aktualisieren. Das IFix-Tool
Schritte für die Migration
- Öffnen Sie eine Eingabeaufforderung mit dem Verzeichnis, in dem sich Ihre GIT-Repositories befinden. Standardmäßig ist dies der Pfad: c:users<username>sourcecerepos
- Klont alle Dateien von TFS nach Git, wobei der Verlauf erhalten bleibt. Das Git-Repository wird erstellt, wenn es noch nicht existiert.
Typ:
git tf clone <tfs Sammlung URL> <tfs team projekt pfad> <git repository name> --tief
Wenn Sie die Historie nicht zu Git mitnehmen möchten. Dann lassen Sie den Parameter -deep weg.
- Wählen Sie das neue Repository, indem Sie das Verzeichnis ändern.

- Aktualisieren Sie die gitignore-Datei mit der neuesten Version von github und fügen Sie sie dem Repository hinzu. Dies kann mit Ifix oder manuell erfolgen. Wenn Sie Ifix verwenden, führen Sie die folgenden Schritte aus:
- Type:
ifix gitignore -s -f
- Fügen Sie die Datei zum Repository hinzu:
git
add *
- Übertragen Sie die Datei mit einem Kommentar:
git
commit -m "updated gitignore
" Das Ergebnis sieht so aus:
- Type:
- Entfernen Sie die alte Verbindung zu TFS VC in der Konfiguration von git
- Öffnen Sie die Konfigurationsdatei im Verzeichnis .git.
- Stellen Sie sicher, dass die Datei nur die folgenden Informationen enthält:

- Bereinigen Sie das Repository
Die Datei gitignore verhindert, dass wir dlls zum Repository hinzufügen. Wegen der Verwendung von Nuget-Paketen wollen wir sicherstellen, dass sich keine DLLs in unserem Repository befinden. Falls doch, löschen Sie sie aus dem Repository und dem Verlauf. Wenn dlls gefunden werden. Löschen Sie auch pdb's. Schließlich wollen wir auch keine Paketordner in unserem Repository haben.
-
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch *.dll'

- In diesem Fall wurden keine dlls gefunden, da der Master unverändert ist. Daher war es in diesem Beispiel nicht erforderlich, den folgenden Befehl auszuführen, um auch die pdb's zu löschen.
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch *.pdb'
- Löschen Sie die Paketordner:
git filter-branch --force --index-filter "git rm -rf --cached --ignore-unmatch packages"

- Bereinigen Sie Git und führen Sie eine Müllsammlung durch:
git
reflog expire --all
gitgc --aggressive --prune
-
- Wenn Sie Änderungen an der Lösung vornehmen möchten. Das können Sie in diesem Schritt tun. In unserem Fall teilen wir die Lösung in mehrere Lösungen auf. Wir löschen also die Projekte aus der Lösung und verwenden statt der Projektreferenzen die Nuget-Referenzen.
- Fügen Sie das lokale Repository dem entfernten Git-Repository hinzu.
- Navigieren Sie zu dem Verzeichnis des Repositorys
- Führen Sie die folgenden Befehle aus:
git
remote add origin <
url des entfernten Git-Repositoriums> git push -u origin --all

Verfasst von
Pascal Naber
Contact
