Hinweis: Sie benötigen Git Version 2.22.0 oder höher, um diese Anweisungen zu befolgen, andernfalls funktioniert git filter-repo
nicht.
Wenn Du bei der Erstellung eines Repository-Klons einen Ordner in ein separates Repository verschiebst, verlierst Du weder Deinen Git-Verlauf noch die bereits vorgenommenen Änderungen. Beachte jedoch, dass das neue Repository nicht die Branches und Tags des ursprünglichen Repositorys enthält.
-
Öffne TerminalTerminalGit Bash.
-
Ändere Dein aktuelles Arbeitsverzeichnis in das Verzeichnis, in dem das neue Repository erstellt werden soll.
-
Klone das Repository, das den Unterordner enthält.
git clone https://HOSTNAME/USERNAME/REPOSITORY-NAME
-
Ändere Dein aktuelles Arbeitsverzeichnis in das Verzeichnis mit dem geklonten Repository.
cd REPOSITORY-NAME
-
Um den Unterordner aus den restlichen Dateien im Repository herauszufiltern, installiere
git-filter-repo
, und führe danngit filter-repo
mit den folgenden Argumenten aus:FOLDER-NAME
: Der Ordner in deinem Projekt, in dem du ein separates Repository erstellen möchtest.
Tipp: Windows-Benutzer sollten
/
zum Trennen von Ordnern verwenden.$ git filter-repo --path FOLDER-NAME/ # Filter the specified branch in your directory and remove empty commits
Das Repository sollte jetzt nur die Dateien aus dem bzw. den zuvor angegebenen Unterordner(n) enthalten.
Wenn ein bestimmter Unterordner der neue Stammordner des neuen Repositorys sein soll, können Sie den folgenden Befehl verwenden:
$ git filter-repo --subdirectory-filter FOLDER-NAME # Filter the specific branch by using a single sub-directory as the root for the new repository
-
Erstelle ein neues Repository auf GitHub Enterprise Server.
-
Klicken Sie oben in Ihrem neuen Repository auf der Seite zur Schnelleinrichtung von GitHub auf , um die URL des Remoterepositorys zu kopieren.
Tipp: Weitere Informationen zum Unterschied zwischen HTTPS- und SSH-URLs findest du unter Informationen zu Remote-Repositorys.
-
Füge einen neuen Remotenamen mit der URL hinzu, die du für dein Repository kopiert hast. Beispielsweise sind
origin
oderupstream
zwei häufige Optionen.git remote add origin https://HOSTNAME/USERNAME/REPOSITORY-NAME.git
-
Vergewissere dich, dass die Remote-URL mit deinem neuen Repositorynamen hinzugefügt wurde.
$ git remote -v # Verify new remote URL > origin https://HOSTNAME/USERNAME/NEW-REPOSITORY-NAME.git (fetch) > origin https://HOSTNAME/USERNAME/NEW-REPOSITORY-NAME.git (push)
-
Übertrage Deine Änderungen am neuen Repository per Push auf GitHub Enterprise Server.
git push -u origin BRANCH-NAME