Heroku hat die Politik, alle Zweige außer "Meister" zu ignorieren.
Ich bin mir zwar sicher, dass die Designer von Heroku hervorragende Gründe für diese Richtlinie haben (ich vermute für die Speicher- und Leistungsoptimierung), aber für mich als Entwickler ist die Konsequenz, dass ich auf einfache Weise einen einfachen Weg möchte, egal an welchem lokalen Themenbereich ich arbeite um Herokus Master auf diesen lokalen Themenzweig umzustellen und einen "git push heroku -f" auszuführen, um den Master auf Heroku zu überschreiben.
Was ich durch das Lesen des Abschnitts "Pushing Refspecs" von http://progit.org/book/ch9-5.html erhalten habe, ist
Git Push -f Heroku Local-Topic-Zweig: Refs / Heads / Master
Was ich wirklich möchte, ist eine Möglichkeit, dies in der Konfigurationsdatei so einzurichten, dass "git push heroku" immer die oben genannten Schritte ausführt und den Zweig für lokale Themen durch den Namen meines aktuellen Zweigs ersetzt. Wenn jemand weiß, wie das geht, lass es mich wissen!
Die Einschränkung dafür ist natürlich, dass dies nur dann sinnvoll ist, wenn ich der einzige bin, der auf diese Heroku-App / dieses Heroku-Repository zugreifen kann. Ein Test- oder QS-Team könnte ein solches Repository verwalten, um verschiedene Kandidatenzweige auszuprobieren, aber sie müssten sich koordinieren, damit sie sich alle darauf einigen, welchen Zweig sie an einem bestimmten Tag darauf drängen.
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, so dass "Git Push" immer alles zum Ursprung sichert und "Git Push Heroku" jeden Zweig, auf dem ich mich gerade befinde, zu Herokus Hauptzweig schiebt und ihn überschreibt im Bedarfsfall.
Würde das funktionieren?
[entferntes "Heroku"] url = [email protected]: my-app.git push = + refs / Heads / *: Refs / Heads / Master
Ich würde gerne von jemandem hören, der mehr Erfahrung hat, bevor ich anfange zu experimentieren, obwohl ich wahrscheinlich eine Dummy-App auf Heroku erstellen und damit experimentieren könnte.
Was das Abrufen betrifft, ist es mir eigentlich egal, ob das Heroku-Repository schreibgeschützt ist. Ich habe immer noch ein separates Repository wie GitHub zum Sichern und Klonen aller meiner Arbeiten.
Fußnote: Diese Frage ähnelt der Good Git-Bereitstellung mit der Zweigstrategie mit Heroku , ist jedoch nicht ganz dieselbe .
Antworten:
Bei Verwendung eines Platzhalters musste dieser auf beiden Seiten der Referenz vorhanden sein, sodass er
+refs/heads/*:refs/heads/master
nicht funktioniert. Aber Sie können verwenden+HEAD:refs/heads/master
:Sie können dies auch direkt mit git push tun :
quelle
git push
Befehle machen dasselbe. Siehegit push --help
für die Bedeutung der-f
Option und die+
in der Referenz.-f
steht für Kraft . Es funktionierte für mich mit Jassas Antwort .Siehe https://devcenter.heroku.com/articles/git#deploying-code
quelle
git push :master
den Hauptzweig zu löschen, indem Sie ihn mit nichts überschreiben. Das ist etwas anderes als das Überschreiben mit einem anderen Zweig. Heroku verfügt wahrscheinlich über Sicherheitsvorkehrungen, um das Löschen des Hauptzweigs zu verhindern.quelle
-f
oder--force
, und es ist immer am besten sicherzustellen, dass Sie wissen, was Sie tun, wenn Sie Druck erzwingen.Der sicherste Befehl, um verschiedene lokale Git-Zweige an Heroku / master zu senden.
Hinweis: Obwohl Sie ohne -f pushen können, wird das -f (Force-Flag) empfohlen, um Konflikte mit den Pushs anderer Entwickler zu vermeiden.
quelle
Bei mir funktioniert es,
Quelle: - offizielle Dokumente
quelle
Beachten Sie auch, dass bei Verwendung des Git-Flow-Systems und Ihres Feature-Zweigs möglicherweise aufgerufen wird
und mit einer git-fernbedienung namens stagingtwo wäre der befehl, auf heroku zu drücken
quelle
Sie sollten sich heroku_san ansehen , es löst dieses Problem ganz gut.
Zum Beispiel könnten Sie:
Es macht es auch einfach, neue Heroku-Instanzen zu starten, um einen Themenzweig auf neuen Servern bereitzustellen:
Und natürlich können Sie einfachere Rechenaufgaben erledigen, wenn Sie häufig etwas tun.
quelle
Ich fand das hilfreich. http://jqr.github.com/2009/04/25/deploying-multiple-environments-on-heroku.html
quelle
Heroku Labs bietet jetzt ein Github-Add-On an, mit dem Sie angeben können, welcher Zweig verschoben werden soll.
Siehe Herokus Artikel zu dieser Beta-Funktion.
Sie müssen sich vorerst als Beta-Tester anmelden.
quelle
Ich denke es sollte sein
push = refs/heads/*:refs/heads/*
stattdessen...
quelle