Ich benutze git-subtree (von Avery Pennarun). In meinem aktuellen Git Repo habe ich natürlich
alle meine Projektdateien / Ordner und eine Unterverzeichnis namens "lib".
Wenn ich diesen Git Repo nun mit git clone
klonen bekomme ich alle Projektdateien und
der Teilbaum "lib" (alles so wie es sein sollte).
Was ich jetzt versuchte: Ich habe etwas im Teilbaum "lib" im geklont geändert
Repo und versuchte, die Änderungen zurück auf das Remote Repo des Teilbaums "lib" zu schieben
git subtree push
, aber es hat nicht funktioniert. Was ist das Problem? Muss ich es hinzufügen?
als Unterbaum zuerst mit git subtree hinzufügen?
Thx im Voraus
Disclaimer, ich vermute, ich bin nur ein paar Tage vor Ihnen, die über Teilbaum lernen: -)
Wenn Sie nur git subtree push
verwenden, geben Sie dem Unterbaum nicht genug Informationen, um Ihre Änderungen zu extrahieren und zu übertragen.
Wenn Sie den Repo richtig geklont haben, ist der Unterbaum bereits da. In Subtree muss angegeben werden, von welchem Unterbaum Sie drücken möchten (selbst wenn Sie nur einen haben) und er muss auch wissen, wohin er drücken soll - insbesondere wollen Sie nicht zum Repo der obersten Ebene wechseln. Daher möchten Sie etwas wie:
%Vor%Offensichtlich sollten Repo und Refspec geändert werden, damit sie mit Ihrem Repo übereinstimmen.
Wenn Sie sehen wollen, was hier passiert (und es hilft), teilt Teilbaum die Änderungen, die die Dateien innerhalb des Teilbaums betreffen, in einen anderen Zweig und schiebt diesen dann in den Teilbaum-Repo. Um dies zu sehen, verwenden Sie subtree split
Dann schauen Sie sich den Zweig an, den Sie gemacht haben:
%Vor%und, drücken Sie sie manuell
%Vor%Wenn dies nicht funktioniert, haben Sie möglicherweise den Teilbaum nicht in Ihren Repo eingebunden. Wenn Sie einen Teilbaum hinzufügen:
%Vor%Sie müssen auch den Teilbaum zusammenführen und ihn zurück auf den Repo der obersten Ebene schieben.
%Vor%Ich hatte genau das gleiche Problem, das Sie hatten, und ich löste es im Wesentlichen mit dem Ansatz, den Roger Nolan vorgeschlagen hatte. Wenn Sie jedoch Pech haben, ein Dateisystem zu verwenden, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird, müssen Sie auch sicherstellen, dass jedes Mal, wenn Sie einen Pull und einen Push ausführen, der Fall Ihres Präfixes gleich bleibt.
>Wenn Sie den Fall fälschlicherweise durcheinanderbringen, wird Git glauben, dass Sie zwei Unterbäume haben, während nur einer im Dateisystem existiert.
Also ist die Lösung, mit der ich endete (falls es jemandem hilft):
publish_<your-subtree-name>
. update_<your-subtree-name>
. PS & gt; Der Parameter --squash ist wichtig, insbesondere wenn verschiedene Zweige Ihrer Repositories verschiedene Zweige des Teilbaums ziehen und wenn Sie mehrere Teilbäume in Ihrem Projekt haben.
Tags und Links git git-subtree