Ich habe zwei Git Repos, die Gabeln voneinander sind und ich muss gelegentlich Commits von einem zum anderen importieren.Wie kann ich git Patches nur für Commits generieren/anwenden, die bestimmte Dateien ändern
Zum Beispiel:
git-repo1
hat diese Verzeichnisstruktur:
repo1/project1/src
repo1/project2/src
während git-repo2
hat die folgende Verzeichnisstruktur:
repo2/src/
Ich möchte eine Reihe von Commits machen und Patches nur für Commits generieren, die Dateien innerhalb eines bestimmten Unterverzeichnisses ändern (zB) und alle Commits ignorieren, die nur irgendwo anders Dateien ändern.
Oder alternativ Patches für alle Commits generieren, aber nur das Patch anwenden, wenn es Dateien in einem bestimmten Verzeichnis ändert.
Ich muss die Metadaten über die Commits beibehalten, so dass das Spielen mit git diff
nicht als eine praktikable Option scheint.
Die Verzeichnisstruktur zwischen den gegabelten Git-Repos ist unterschiedlich.
Gibt es einen einfachen Weg, dies zu tun?
UPDATE1
Ich sehe diese Frage (How to apply a git patch from one repository to another?) in Bezug auf den Umgang mit Strukturen Verzeichnis unterscheiden.
Aber was, wenn der Patch davon spricht, Dateien zu modifizieren, die einfach nicht existieren? Ich würde solche Änderungen gerne ignorieren.
Bei Verwendung des Befehls "sed -rf mystuff.sed mystuff.patch> justmystuff.patch" Ich bekomme den Fehler "sed: illegale Option - r" Haben Sie eine Idee, was es sein könnte? –
Verwenden '- E 'statt, '-r' ist jetzt eine historische Schreibweise. In der Antwort behoben, danke. – jthill
Es wäre nett, wenn Sie eine Erklärung auf Ihrem sed Skript geben können! – Neil