Ich verwende den Git-Teilbaum mit einigen Projekten, an denen ich arbeite, um einen Basiscode zwischen ihnen zu teilen. Der Basiscode wird häufig aktualisiert, und die Upgrades können in jedem der Projekte durchgeführt werden, wobei alle letztendlich aktualisiert werden.
Ich bin auf ein Problem gestoßen, bei dem git meldet, dass mein Teilbaum auf dem neuesten Stand ist, aber das Drücken wird abgelehnt. Beispielsweise:
#! git subtree pull --prefix=public/shared project-shared master
From github.com:****
* branch master -> FETCH_HEAD
Already up-to-date.
Wenn ich drücke, sollte ich eine Nachricht erhalten, dass es nichts zu pushen gibt ... Richtig? RICHTIG? :(
#! git subtree push --prefix=public/shared project-shared master
git push using: project-shared master
To git@github.com:***
! [rejected] 72a6157733c4e0bf22f72b443e4ad3be0bc555ce -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:***'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Was könnte der Grund dafür sein? Warum scheitert das Schieben?
--rejoin
, um Teilbaum-Pushs zu beschleunigen. Wenn ich den Teilbaum-Push manuell durchlaufe subtree split --rejoin
und laufe, hat der geteilte Teilbaumzweig nur den Verlauf bis zur letzten Wiederverbindung, wenn er normalerweise den gesamten Teilbaumverlauf enthält. Für mich ist dies die unmittelbare Ursache für Fehler beim nicht schnellen Vorlauf. Ich bin mir immer noch nicht sicher, warum die Teilbaumaufteilung einen abgeschnittenen Verlauf generiert.