wake-up-neo.com

Wie man verschiedene lokale Git-Zweige zu Heroku / master pusht

Heroku hat die Politik, alle Zweige außer 'master' zu ignorieren.

Ich bin mir sicher, dass die Designer von Heroku gute Gründe für diese Richtlinie haben (ich schätze, sie ist speicher- und leistungsoptimierend). Die Konsequenz für mich als Entwickler ist jedoch, dass ich mir einen einfachen Weg wünsche, an welchem ​​lokalen Zweig auch immer ich gerade arbeite Herokus Meister zu diesem lokalen Zweig wechseln und ein "git Push heroku -f" ausführen, um den Meister auf Heroku zu überschreiben.

Was ich beim Lesen des Abschnitts "Pushing Refspecs" von http://progit.org/book/ch9-5.html erhalten habe, ist

git Push -f heroku Lokaler Zweig: refs/heads/master

Was ich wirklich gerne hätte, ist eine Möglichkeit, dies in der Konfigurationsdatei so einzurichten, dass "git Push heroku" immer das oben Gesagte ausführt und local-topic-branch durch den Namen meines Namens ersetzt aktueller Zweig ist zufällig. Wenn jemand weiß, wie man das erreicht, lass es mich wissen!

Die Einschränkung dabei ist natürlich, dass dies nur sinnvoll ist, wenn ich der einzige bin, der auf diese Heroku-App/dieses Heroku-Repository pushen kann. Ein Test- oder QA-Team könnte ein solches Repository verwalten, um verschiedene Kandidatenzweige auszuprobieren, aber es müsste koordiniert werden, damit sich alle darüber einig sind, welchen Zweig sie an einem bestimmten Tag ansteuern.

Natürlich wäre es auch eine sehr gute Idee, ein separates Remote-Repository (wie GitHub) ohne diese Einschränkung für die Sicherung aller Daten zu haben. Ich würde diesen einen "Ursprung" nennen und "Heroku" für Heroku verwenden, damit "git Push" immer alles in Origin sichert und "git Push Heroku" den Zweig, auf dem ich mich gerade befinde, in Herokus Hauptzweig überträgt und ihn überschreibt im Bedarfsfall.

Würde das funktionieren?

 [remote "heroku"] ​​
 url = [email protected]: my-app.git 
 Push = + refs/heads/*: refs/heads/master 

Bevor ich anfange zu experimentieren, würde ich gerne von jemandem hören, der mehr Erfahrung hat, obwohl ich wahrscheinlich eine Dummy-App auf Heroku erstellen und damit experimentieren könnte.

Beim Abrufen ist es mir eigentlich egal, ob das Heroku-Repository schreibgeschützt ist. Ich habe immer noch ein separates Repository, wie GitHub, für die Sicherung und das Klonen aller meiner Arbeiten.

Fußnote: Diese Frage ist ähnlich, aber nicht ganz das Gleiche wie Gute Git-Bereitstellung mit Branches-Strategie mit Heroku?

372

Bei Verwendung eines Platzhalters musste dieser auf beiden Seiten der Referenz angegeben werden, damit +refs/heads/*:refs/heads/master Nicht funktioniert. Sie können aber +HEAD:refs/heads/master Verwenden:

git config remote.heroku.Push +HEAD:refs/heads/master

Sie können dies auch direkt mit git Push tun:

git Push heroku +HEAD:master
git Push -f heroku HEAD:master
119
Chris Johnsen

Siehe https://devcenter.heroku.com/articles/git#deploying-code

$ git Push heroku yourbranch:master
1485
jassa
git Push -f heroku local_branch_name:master
48
Tomasz Mazur

Der sicherste Befehl, um verschiedene lokale Git-Zweige an Heroku/master zu senden.

git Push -f heroku branch_name:master

Hinweis: Sie können zwar ohne die Option -f pushen, es wird jedoch empfohlen, die Option -f (Flag erzwingen) zu verwenden, um Konflikte mit den Pushs anderer Entwickler zu vermeiden.

6
techdreams

Beachten Sie auch, dass bei Verwendung des Git Flow-Systems und Ihres Feature-Zweigs möglicherweise ein Aufruf erfolgt

feature/mobile_additions

und mit einer git-fernbedienung namens stagingtwo würde der befehl push to heroku lauten

git Push stagingtwo feature/mobile_additions:master
5
Jonathon Batson

Sie sollten sich heroku_san ansehen, es löst dieses Problem ganz gut.

Zum Beispiel könnten Sie:

git checkout BRANCH
rake qa deploy

Es macht es auch einfach, neue Heroku-Instanzen hochzufahren, um einen Zweig auf neuen Servern bereitzustellen:

git checkout BRANCH
# edit config/heroku.yml with new app instance and shortname
rake shortname heroku:create deploy # auto creates deploys and migrates

Und natürlich können Sie einfachere Rechenaufgaben machen, wenn Sie häufig etwas tun.

4
jqr
2
David

Heroku Labs bietet jetzt ein Github-Add-On, mit dem Sie angeben können, welcher Zweig gepusht werden soll.

Siehe Herokus Beschreibung dieser Beta-Funktion.

Sie müssen sich vorerst als Beta-Tester anmelden.

1
irth

Ich denke es sollte sein

Push = refs/heads/*:refs/heads/*

stattdessen...

0
ken