Von Gast (nicht überprüft) , 29 April 2026

Das Ziel

Sie wollen ein Verzeichnis von einem Repo zu einem anderen verschieben und die volle Commit-Historie erhalten.

Schritt 1: die Teilmenge extrahieren

git clone <source-repo> source-extract
cd source-extract
git filter-repo --path packages/widget --path-rename packages/widget:

Schritt 2: in das Ziel importieren

cd ../target-repo
git remote add widget-source ../source-extract
git fetch widget-source
git merge --allow-unrelated-histories widget-source/main

Schritt 3: die Dateien platzieren

# Before merging, in source-extract:
git filter-repo --to-subdirectory-filter vendor/widget

Aufraumen

git remote remove widget-source
rm -rf ../source-extract

Historie verifizieren

git log --follow vendor/widget/index.js
git blame vendor/widget/index.js

Dateien aus der Quelle entfernen

cd source-repo
git filter-repo --invert-paths --path packages/widget

Alternative: git subtree

git subtree add --prefix=vendor/widget <source-url> main --squash
git subtree pull --prefix=vendor/widget <source-url> main --squash

Fallstricke vermeiden

  • Immer auf Klonen arbeiten, nicht auf primaren Checkouts.
  • Auf einem frischen Klon ausfuhren.
  • Mit dem Team koordinieren.
  • Tags werden von filter-repo erhalten.