Ich habe ein kompliziertes ionisches Projekt, das ich entwickle. Viele der Komponenten und Anbieter, die ich entwickle, sind generisch und können in anderen Projekten meiner Firma verwendet werden. Dies ist in der Softwareentwicklung üblich. Dies ist der Git-Workflow ich mit gekommen bin (diese Grafik zeigt Zweige):Wie kann ich einen bestimmten Ordner hinzufügen, wenn ich git subtree verwende?
my-company-library-repo ----
|_ component 1 feature branch
|_ company component 1 feature branch testbed
|_ component 2 feature branch
Die letzte Code-Komponente (nur eine .ts
oder .js
-Datei) im Testbed entwickelte Komponente Funktionszweig geschoben wird. Der Testbed-Code verbleibt im Testbed-Zweig. Im Feature-Zweig werden auch alle Dokumente ausgeführt, die die Komponente möglicherweise begleiten.
Jetzt in der Anwendung Repo füge ich das Feature Zweig als Unterbaum diesen Befehl:
git subtree add -P <destination-dir/feature> --squash <my-company-library-repo-url> <feature-branch-name>
Und das gab mir die folgende (dieses Graph Ordnerstruktur zeigt):
my-app-repo-------
|_ company-library-feature-subtree
Diese sollte nur die .js
oder .ts
und seine Dokumente in seinem Unterordner enthalten. Ich bekomme das nur zum Teil. Wenn es den Teilbaum zieht, ist es nur die Komponente ziehen und es ist doc-Dateien, aber die Dateien werden in eine sehr lange Liste von Unterverzeichnissen wie folgt gezogen:
my-app-repo/src/feature-branch/feature/src/app/providers/...
Dies macht es schwer, die Bibliothek zu benutzen, weil Den Dateien werden so viele Verzeichnisse (unbenutzte Verzeichnisse) tiefgelegt.
Also, wenn ich meine 2 Dateien aus dem Feature-Testbed-Zweig in den Feature-Zweig schieben, wie kann ich nicht die gesamte Verzeichnisstruktur mit ihnen ziehen?
Bitte bearbeiten Sie Ihren Beitrag, um weitere Informationen zu Ihrer Frage hinzuzufügen. Vermeiden Sie das Hinzufügen in den Kommentaren, da sie schwerer zu lesen sind und einfacher gelöscht werden können. Ich habe die Informationen aus Ihren vorhandenen Kommentaren in Ihre Frage bearbeitet (// stackoverflow.com/help/editing). –
Beachten Sie, dass das Wort * push * in Git eine besondere Bedeutung hat: Sie pushen keine Dateien, Sie schieben Commits und das überträgt sie von einem Repository zu einem anderen. Ebenso hat * branch * spezielle Definitionen (und ist leider mehrdeutig), von denen keines Repositories durchkreuzt; und * pull * bedeutet * fetch-then-merge *, wobei * fetch * und * merge * ebenfalls Fachjargon sind. 'git subtree' ist kompliziert, weil es absichtlich mehrere Repositories, Commits und Zweige mischt und versucht, sie alle auf einmal zu tun. @ ScottWeldons Änderungen haben hier sehr geholfen, aber es wird immer noch verwirrend sein. :-) – torek