2015-10-16 16 views
19

Wir verwenden eine Teilbaumbereitstellung a lá this Gist, um ein Unterverzeichnis unseres Yeoman-Projekts bereitzustellen. In unserem Fall heißt die Verzweigung Produktion, nicht gh-Seiten. DieseWie erzwinge ich einen Unterbaum Push, um entfernte Änderungen zu überschreiben?

funktionierte perfekt, bis gestern, als die Git-Server den Befehl git subtree push --prefix dist origin production abgelehnt, sagen

! [rejected]  9fe1683aa574eae33ee6754aad702488e0bd37df -> production (non-fast-forward) 
error: failed to push some refs to '[email protected]:web-and-new-media/graduation2015.git' 
hint: Updates were rejected because a pushed branch tip is behind its remote 
hint: counterpart. 

Wenn ich an die Produktionszweig wechseln lokal (was sauber ist), git pull kehrt Your branch is up-to-date with 'origin/production'. auch wenn ich die --rebase Option .

Ich kann den Inhalt der Produktionszweig auf dem Server über unsere Web-UI sehen und es gibt nichts, was nicht sein sollte, nur die kompilierte Ausgabe unserer dist Verzeichnis wie ich es erwarten würde.

Zu diesem Zweck scheint es, als ob ich sicher ein Überschreiben dieser Dateien erzwingen könnte, aber wie? git subtree push hat keine --force Option.

+0

Der Befehl 'git subtree split --prefix dist herstellung 'scheitert auch:' fatal: mehrdeutiges Argument' Herkunft ': unbekannte Revision oder Pfad nicht im Arbeitsbaum.' – ele

+0

Nun, jetzt bin ich wirklich ratlos. Ich habe 'git subtree pull --prefix distursprüngliche Produktion' ausgeführt, was mich mit einem Zusammenführungskonflikt in Bezug auf den Code, den ich geändert habe, verlassen hat, also habe ich das behoben und' git subtree push --prefix dist herkunftsproduktion' wieder ausgeführt. Nur mit dem gleichen Fehler erneut zu scheitern. – ele

Antwort

30

Der Trick war der Unterbaum aufgeteilt in eine Zwangs Push-to-Kette:

git push origin `git subtree split --prefix dist master`:production --force 

ich dies aus dem Nachtrag vom http://clontz.org/blog/2014/05/08/git-subtree-push-for-deployment/ bekam, der auf Stack-Überlauf this Antwort verweist tatsächlich. Ich hatte das schon früher überflogen, aber der Post von Steve Clontz ließ es für mich klicken.

+1

Diese Lösung ist fehlgeschlagen mit "fatal: mehrdeutiges Argument 'publish-dev': unbekannte Revision oder Pfad nicht im Arbeitsbaum." –

+0

Aktualisierter Link http://clontz.org/blog/2014/05/08/git-subtree-push-for-deployment/ –

+0

Hat jemand das Problem der fatalen mehrdeutigen Argumente gelöst? –