Erstellen Sie einen Zweig in Git aus einem anderen Zweig


989

Ich habe zwei Zweige: Master und Dev

Ich möchte einen "Feature-Zweig" aus dem Entwickler- Zweig erstellen .

Derzeit mache ich auf dem Branch Dev:

$ git checkout -b myfeature dev

... (etwas Arbeit)

$ git commit -am "blablabla"
$ git push origin myfeature

Aber nachdem ich meine Zweige visualisiert hatte, bekam ich:

--**master**
------0-----0-----0-----0-----0
------------------------**dev**----**myfeature**

Ich meine, der Zweig scheint verschmolzen zu sein, und ich verstehe nicht warum ...

Was mache ich falsch?

Können Sie mir bitte erklären, wie Sie von einem anderen Zweig abzweigen und zum Remote-Repository für den Feature-Zweig zurückkehren?

All das in einem Verzweigungsmodell wie dem hier beschriebenen .

Antworten:


1431

Wenn Ihnen die Methode in dem von Ihnen geposteten Link gefällt, schauen Sie sich Git Flow an .

Es ist eine Reihe von Skripten, die er für diesen Workflow erstellt hat.

Aber um Ihre Frage zu beantworten:

$ git checkout -b myFeature dev

Erstellt einen MyFeature-Zweig aus dev. Mach deine Arbeit und dann

$ git commit -am "Your message"

Führen Sie nun Ihre Änderungen ohne schnellen Vorlauf mit dev zusammen

$ git checkout dev
$ git merge --no-ff myFeature

Übertragen Sie nun die Änderungen auf den Server

$ git push origin dev
$ git push origin myFeature

Und du wirst sehen, wie du es willst.


32
Was ist die Wichtigkeit des Drückens, myFeaturenachdem es mit Witz verschmolzen wurde dev?
Alexander Suraphel

3
@spartacus Wenn der myFeatureZweig vor dem Zusammenführen auf den Server verschoben wurde, dann nichts. Wenn dies myFeaturejedoch noch nicht auf den Server übertragen wurde und Sie möchten, dass es auf dem Server angezeigt wird, müssen Sie es passend verschieben.
xOneca

15
ist git checkout -b myFeature devdas gleiche wie diese 3 Befehle: git checkout devdann git branch myFeatureund dann git checkout myFeature?
Kevin Meredith

3
Es ist oder sollte es sein. Sehen Sie etwas anderes?
Abizern

33
Um dies für andere Neulinge zu verdeutlichen, sieht eine --no-ffZusammenführung so aus
A__

407

Wenn Sie einen neuen Zweig aus einem der vorhandenen Zweige in Git erstellen möchten, folgen Sie einfach den Optionen.

Zuerst in den Zweig wechseln / auschecken, von dem aus Sie einen neuen Zweig erstellen möchten. Zum Beispiel, wenn Sie die folgenden Zweige haben wie:

  • Meister
  • dev
  • branch1

Wenn Sie also einen neuen Zweig mit dem Namen "subbranch_of_b1" unter dem Zweig "branch1" erstellen möchten, gehen Sie folgendermaßen vor:

  1. Zur Kasse gehen oder in "branch1" wechseln

    git checkout branch1
    
  2. Erstellen Sie nun Ihren neuen Zweig mit dem Namen "subbranch_of_b1" unter "branch1" mit dem folgenden Befehl.

    git checkout -b subbranch_of_b1 branch1
    

    Mit dem obigen Befehl wird ein neuer Zweig mit dem Namen subbranch_of_b1 unter dem Zweig branch1 erstellt (beachten Sie, dass branch1der obige Befehl nicht obligatorisch ist, da der HEAD derzeit darauf verweist. Sie können ihn jedoch präzisieren, wenn Sie sich in einem anderen Zweig befinden).

  3. Nachdem Sie mit der Subbranch_of_b1 gearbeitet haben , können Sie sie lokal oder remote festschreiben und pushen oder zusammenführen.

Eine grafische Beispieldarstellung zum Erstellen von Zweigen unter einem anderen Zweig

Schieben Sie die Unterzweig_von_b1 auf Remote

 git push origin subbranch_of_b1 

7
Wie schiebe ich die Subbranch_of_b1 auf Remote?
user269867

13
@ user269867: "git push origin subbranch_of_b1" erledigt diesen Job für Sie.
Praveen George

4
Wenn ich Änderungen an den Master weitergebe, tritt dies dann automatisch in branch1 auf?
Meister Yoda

2
Beachten Sie, dass branch1 im obigen Befehl nicht obligatorisch ist, da der HEAD derzeit darauf zeigt. Sie können ihn präzisieren, wenn Sie sich in einem anderen Branch befinden, obwohl ich danach gesucht habe
felipsmartins

10
Ich bin hierher gekommen und habe mich gefragt, ob das git checkout -b some-brancheine Abkürzung ist git checkout -b some-branch master. Es stellt sich heraus, dass git checkout -b some-branchdie Abkürzung fürgit checkout -b some-branch <current_active_branch>
Frank Henard

45

Erstellen Sie einen Zweig

  • Zweig erstellen, wenn der Hauptzweig ausgecheckt ist. Hier werden Commits im Master mit dem von Ihnen erstellten Zweig synchronisiert.

    $ git branch branch1

  • Zweig erstellen, wenn Zweig1 ausgecheckt ist. Hier werden Commits in Zweig1 mit Zweig2 synchronisiert

    $ git branch branch2


Kasse einer Filiale

Der Befehl git checkout wechselt zwischen Zweigen oder stellt funktionierende Baumdateien wieder her

  • $ git checkout branchname

Zweig umbenennen

  • $ git branch -m branch1 newbranchname

Löschen Sie einen Zweig

  • $ git branch -d branch-to-delete
  • $ git branch -D branch-to-delete ( Löschen erzwingen, ohne den zusammengeführten Status zu überprüfen )

Zweig erstellen und wechseln

  • $ git checkout -b branchname

Zweige, die vollständig enthalten sind

  • $ git branch --merged


************************** Branchendifferenzen [git diff branch1..branch2] ************** **********

Mehrzeiliger Unterschied
  • $ git diff master..branch1
Singleline Unterschied
  • $ git diff --color-words branch1..branch2

1
Auch nach dem Umbenennen des Zweigs git push origin :old-name new-namelöschen Sie den Remote-Zweig mit dem alten Namen und drücken den lokalen Zweig mit dem neuen Namen.
95faf8e76605e973

13

Arbeiten Sie gleichzeitig am devZweig. In Ihrem Szenario bewegt sich der Feature-Zweig von der Spitze des Dev-Zweigs nach vorne, der Dev-Zweig ändert sich jedoch nicht. Es ist einfacher, als gerade Linie zu zeichnen, da dies als Vorwärtsbewegung angesehen werden kann. Sie haben es geschafft, Punkt A auf dev zu zeigen, und von dort aus sind Sie einfach auf einem parallelen Pfad weitergegangen. Die beiden Zweige sind nicht wirklich auseinander gegangen.

Wenn Sie nun vor dem Zusammenführen ein Commit für dev vornehmen, beginnen Sie erneut mit demselben Commit A, aber jetzt gehen die Funktionen zu C und dev zu B. Dies zeigt die Aufteilung, die Sie als Zweige visualisieren möchten sind jetzt auseinander gegangen.

*-----*Dev-------*Feature

Gegen

       /----*DevB
*-----*DevA
       \----*FeatureC

9

Git 2.23 führt die Verantwortlichkeiten von ein git switchund git restoreteilt sie aufgit checkout

Erstellen eines neuen Zweigs aus einem vorhandenen Zweig ab Git 2.23:

git switch -c my-new-branch

Zu einem neuen Zweig gewechselt 'Mein-neuer-Zweig'

  • -c ist die Abkürzung für --create und ersetzt die bekannte Git-Kasse -b

Schauen Sie sich diesen Github-Blog-Beitrag an, in dem die Änderungen ausführlicher erläutert werden:

Git 2.23 erweitert die Suite der vorhandenen Befehle um ein neues Paar experimenteller Befehle: git switch und git restore . Diese beiden sollen schließlich eine bessere Schnittstelle für die bekannte Git-Kaufabwicklung bieten. Die neuen Befehle zielen darauf ab, jeweils eine klare Trennung zu haben und die vielen Verantwortlichkeiten der Git- Kaufabwicklung klar aufzuteilen


9

Um einen Zweig aus einem anderen Zweig in Ihrem lokalen Verzeichnis zu erstellen, können Sie den folgenden Befehl verwenden.

git checkout -b <sub-branch> branch

Zum Beispiel:

  • Name des neu zu erstellenden Zweigs 'XYZ'
  • Name des Zweigs ABC, unter dem XYZ angelegt werden muss
git checkout -b XYZ ABC

3

Wenn Sie einen Zweig aus einem anderen Zweig erstellen möchten, gehen Sie wie folgt vor:

Annahmen :

  1. Sie befinden sich derzeit in der Hauptniederlassung.
  2. Sie müssen keine Änderungen festschreiben. (Wenn Sie Änderungen festschreiben müssen, verstauen Sie diese!).
  3. BranchExistingist der Name des Zweigs, aus dem Sie einen neuen Zweig mit Namen erstellen müssen BranchMyNew.

Schritte :

  1. Holen Sie sich den Zweig auf Ihren lokalen Computer.

    $ git fetch origin BranchExisting : BranchExisting
    

Dieser Befehl erstellt einen neuen Zweig in Ihrem lokalen Zweig mit demselben Zweignamen.

  1. Nun von der Hauptzweigkasse zum neu abgerufenen Zweig

    $ git checkout BranchExisting
    
  2. Sie befinden sich jetzt in BranchExisting. Erstellen Sie nun einen neuen Zweig aus diesem vorhandenen Zweig.

    $ git checkout -b BranchMyNew
    

Bitte schön!


1

Zum Erstellen eines Zweigs aus einem anderen kann auch diese Syntax verwendet werden:

git push origin refs/heads/<sourceBranch>:refs/heads/<targetBranch>

Es ist etwas kürzer als "git checkout -b" + "git push origin"

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.