Wie schiebe ich einen lokalen Git-Zweig zum Master-Zweig in der Fernbedienung?


468

Ich habe einen Zweig namens "Entwickeln" in meinem lokalen Repo und möchte sicherstellen, dass er beim Verschieben zum Ursprung mit dem Ursprung / Master zusammengeführt wird. Derzeit wird es, wenn ich drücke, einem Remote-Entwicklungszweig hinzugefügt.

Wie kann ich das machen?


Gibt es einen bestimmten Grund, warum Sie es nicht lokal zusammenführen originund dann auf die Fernbedienung übertragen möchten ?
Bhamby

Ich denke, @galador bedeutet, lokal zusammenzuführen master- aber es ist ein gültiger Punkt. Wenn es stabil genug für den Hauptzweig des Ursprungs ist, dann ist es sicher stabil genug für Ihren Hauptzweig!
Cascabel

1
@ Jefromi Ja, hoppla, Tippfehler. -_-
Bhamby

2
@Jefromi stell dir vor, du hast an etwas in deinem lokalen Master gearbeitet und einige Commits gemacht, die noch nicht bereit sind zu pushen. Dann stellt sich heraus, dass Sie eine dringende Aufgabe haben. Sie erstellen eine lokale Verzweigung vom Remote-Master, arbeiten und übertragen Ihre Änderungen zurück zum Master. Vielleicht ist es nicht der beste Weg, aber genau das ist mir passiert und das habe ich getan. Es funktionierte einwandfrei wie beabsichtigt. Nun, ich hätte eigentlich in einer separaten lokalen Niederlassung arbeiten sollen, aber es ist nervig, die ganze Zeit zu verzweigen, und es war zu spät.
Pinkeen

21
Ich verschiebe einen Entwicklungszweig auf eine nicht öffentlich zugängliche Test-App auf Heroku, um zu sehen, wie die Dinge in Herokus Umgebung funktionieren. Ich möchte meinen Code definitiv nicht zusammenführen master, aber Heroku führt den Code nur aus, wenn er masterin der App aktiviert ist. Dies ist eine absolut vernünftige Anfrage mit legitimen Anwendungsfällen!
JacobEvelyn

Antworten:


813
$ git push origin develop:master

oder allgemeiner

$ git push <remote> <local branch name>:<remote branch to push into>

24
Machen Sie nicht "git push origin: master", das Ihren vorhandenen Zweig der Fernbedienung entfernen kann
Mangirdas Skripka

48
True @MangirdasSkripka! Verwenden git push origin head:masterSie einfach, wenn Sie den Namen des aktuellen Zweigs nicht angeben möchten :)
Francesc Rosas

23
Gute Idee @ FrancescRosàs, es ist jedoch HEAD (Großbuchstaben).
Smokku

@Mipadi, wenn ich Mender Erlaubnis habe, kann ich dies bewegen
Neeraj Sharma

11
@NeerajSharma: Ich weiß nicht, was Mender-Erlaubnis ist oder was Sie bewegen möchten.
Mipadi

194

Wie in den Kommentaren erwähnt, möchten Sie das wahrscheinlich nicht tun ... Die Antwort von mipadi ist absolut richtig, wenn Sie wissen, was Sie tun.

Ich würde sagen:

git checkout master
git pull               # to update the state to the latest remote master state
git merge develop      # to bring changes to local master from your develop branch
git push origin master # push current HEAD to remote master branch

 


23
Um nur zu erwähnen, es gibt einen Sinn in seiner Bitte, ich benutze diesen Fall, um meine Entwicklung an Heroku-Meister
Fabiano Soriani

5
Auch diese Technik ist meiner Meinung nach nur für fortgeschrittene Git-Benutzer. Nicht, dass es zu schwierig wäre, es erfordert nur, dass die Leute verstehen, was sie tun und warum es so funktioniert, wie es funktioniert. Es steht jedem frei, Git nach seinen Wünschen zu verwenden, aber ich denke, dass es für Bildungszwecke viel besser ist, dem von mir vorgeschlagenen Ansatz zu folgen, insbesondere für Git-Neulinge. Saubere "Themenzweige" sind der Anfang. Sie können Ihren Workflow später bei Bedarf optimieren.
Eugene Sajine

1
Es ist eigentlich eine ziemlich häufige Sache. Der Hauptzweig ist normalerweise Ihr Bereitstellungszweig. Wenn zwei Teams absichtlich voneinander abweichen, werden Sie wahrscheinlich einen von Kirschen gepflückten lokalen Zweig verwenden, um Patches nach oben zu verschieben. Jetzt könnten Sie argumentieren, dass die Änderungen stromaufwärts in einen Zweig verschoben und dann von dort in den Master zusammengeführt werden sollten, aber es ist sicherlich nicht so seltsam, es anders herum zu machen, IMO.
Dgatwood

+1 Dies ist der logischste Weg, eine Produktionsversion zu "erstellen".
Ryan

Wie würden Sie es tun, wenn Sie nicht mit Develop verschmelzen möchten, sondern die Entwicklung neu beherrschen möchten?
user239558

-1

Als Erweiterung zu @ Eugenes Antwort eine andere Version, die funktioniert, um Code vom lokalen Repo zum Master / Develop-Zweig zu übertragen.

Wechseln Sie zu Zweig 'Master':

$ git checkout master

Vom lokalen Repo zum Master zusammenführen:

$ git merge --no-ff FEATURE/<branch_Name>

Zum Master drücken:

$ git push

-1

Befolgen Sie die folgenden Schritte, um das lokale Repo in den Master-Zweig zu verschiebenenter code here

$ git status

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.