git-subtree: Push ändert sich von einer geklonten repo
Ich bin mit der git-subtree(von Avery Pennarun). In meinem aktuellen git-repo habe ich natürlich
alle meine Projekt-Dateien/Ordner und eine Unterstruktur namens "lib".
Wenn ich jetzt Klonen Sie das git-repo mit git clone
ich bekomme alle Projekt-Dateien und
der Teilbaum "lib" (alles wie es sein sollte).
Was ich jetzt versucht: ich habe etwas verändert in der Unterstruktur "lib" in der geklonten
repo und versucht, schieben Sie die änderungen zurück in das remote-repo des teilbaums "lib" verwenden
git subtree push
, aber es hat nicht funktioniert. Was ist das problem? Muss ich es hinzufügen
als Teilbaum zuerst mit git subtree hinzufügen?
Thx im Voraus
- Wie hat fügen Sie den Teilbaum, den Sie zu Ihrer top-level-Projekt? Hast du nur ein Verzeichnis und Klon hinein?
- Hi! Ich habe den Teilbaum zu meinem top-level-Projekt mit "git subtree hinzufügen". Vielleicht ist meine Frage nicht klar genug: Wenn ich clone das repo auf einem anderen Rechner, dann habe ich alle Projekte, Dateien sowie der Teilbaum "lib". Jetzt ändere ich etwas in der Unterstruktur "lib" in das geklonte repo, ich kann nicht push die änderungen auf den remote-server mit "git subtree push", das ist mein problem.
- Habe die Antwort helfen?
- Hi Roger! Sorry für meine späte Antwort, ich hatte ein paar Tage Weg. Ihre Antwort mein problem gelöst, danke dir sehr. Wie Sie erwähnten in Ihrer Antwort, die ich gerade angefangen zu lernen, wie Sie mithilfe von git subtree.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Disclaimer, ich vermute, ich bin nur ein paar Tage vor Sie learing über Teilbaum 🙂
Wenn Sie nur
git subtree push
Sie sind nicht zu geben Teilbaum genug Informationen zu extrahieren, und schieben Sie Ihre änderungen.Wenn Sie geklonte repo richtig Teilbaum wird schon drin sein. Teilbaum muss mitgeteilt werden, welches Teilbaum, den Sie möchten, drücken aus (auch wenn Sie nur eine haben) und es muss auch wissen, wo Sie push-to - genauer gesagt, Sie wollen nicht, um push-to-die top-level-repo. Daher, Sie wollen so etwas wie:
Offensichtlich die repo-und refspec sollte geändert werden entsprechend Ihrer repo.
Wenn Sie wollen, zu schauen, was hier passiert (und es hilft) Teilbaum tatsächlich teilt die Veränderungen, die sich auf die Dateien innerhalb des teilbaums in einen anderen Zweig, und dann schiebt, dass der Teilbaum repo. Um dies zu sehen, verwenden Sie
subtree split
dann haben Sie einen Blick auf die Zweig, die Sie gemacht haben:
und schieben Sie Sie manuell
Wenn das nicht funktioniert, dann kann es sein, dass Sie nicht zusammengeführt werden, ist der Teilbaum in Ihr repo. Beim hinzufügen einer Unterstruktur:
müssen Sie auch die Zusammenführung der Teilbaum, und schieben Sie es zurück zu Ihrer top-level-repo.
Ich hatte genau das gleiche problem, das Sie hatten, und ich löste es mit im wesentlichen der Ansatz, Roger Nolan vorgeschlagen. Allerdings, wenn Sie sind unglücklich genug, um auf einem der groß-und Kleinschreibung Dateisystem wie ich war, Sie haben auch, um sicherzustellen, dass jedes mal, wenn Sie einen pull-und einen push, der bei Ihr Präfix bleibt gleich.
Wenn man am Ende nicht mischen bis der Fall durch Fehler, git denken, Sie haben zwei Teilbäume in der Erwägung, dass nur eine vorhanden ist, auf das Dateisystem.
Also die Lösung, dass ich am Ende mit (falls es hilft jemand) ist:
publish_<your-subtree-name>
.update_<your-subtree-name>
.PS> Die --squash parameter ist wichtig, vor allem, wenn die verschiedenen Zweige Ihrer reporsitories ziehen die verschiedenen Zweige der Unterstruktur und auch, wenn Sie mehrere Teilbäume, die in Ihrem Projekt.