Was ist der Unterschied zwischen "Git Branch" und "Git Checkout -b"?

Antworten:

258

git checkout -b BRANCH_NAME Erstellt einen neuen Zweig und checkt den neuen Zweig währenddessen aus git branch BRANCH_NAME ein neuer Zweig erstellt wird. Sie verbleiben jedoch im selben Zweig.

Mit anderen Worten, git checkout -b BRANCH_NAMEmacht das Folgende für Sie.

git branch BRANCH_NAME    # create a new branch
git checkout BRANCH_NAME  # then switch to the new branch
Fatih Acet
quelle
44

git branch Erstellt den Zweig, aber Sie bleiben in dem aktuellen Zweig, den Sie ausgecheckt haben.

git checkout -b erstellt einen Zweig und checkt ihn aus.

Es könnte als Kurzform betrachtet werden von:

git branch name
git checkout name
Manojlds
quelle
Sagen wir lieber: "Git-Zweig erstellt den Zweig, aber Sie bleiben in dem aktuellen Zweig, von dem Sie ausgecheckt haben."
Akash Verma
28
  • git branch: Zeigt alle Ihre Filialen an
  • git branch newbranch: Erstellt einen neuen Zweig
  • git checkout -b newbranch: Erstellt einen neuen Zweig und wechselt sofort zu diesem Zweig. Dies ist das gleiche wie git branch newbranchgefolgt von git checkout newbranch.
Michel Pereira
quelle
23

Vollständige Syntax:

git checkout -b [NEW_BRANCH] [FROM_BRANCH]

Das [FROM_BRANCH] ist optional. Wenn kein FROM_BRANCH vorhanden ist, verwendet git den aktuellen Zweig.

Tuong Le
quelle
7

Es gibt auch eine andere Flagge zu erwähnen, die relativ zu diesen ist.

git checkout -B BRANCH_NAME

Dies ist ein sehr nützlicher Befehl, den ich kürzlich verwendet habe. Dieser Befehl überprüft den von Ihnen angegebenen Zweig und setzt den Zweig basierend auf dem Quellzweig zurück.

ddavison
quelle
2
Kannst du mehr erklären? Ich weiß nicht, was Reset für Git bedeutet
Mikaël Mayer
3
Aus dem Handbuch auf Git:If -B is given, <new_branch> is created if it doesn't exist; otherwise, it is reset. This is the transactional equivalent of $ git branch -f <branch> [<start point>] $ git checkout <branch>
Ddavison
Sie meinen also, dass Sie einen vorhandenen Zweig wiederverwenden können?
Mikaël Mayer
1
Ist es checkout -Bgefährlich, wenn der Zweig, zu dem Sie wechseln, von anderen geteilt wird? Ich habe dies kürzlich verwendet und es schien, als würden die Änderungen in meinem anderen Zweig automatisch mit dem Zweig zusammengeführt, zu dem ich gewechselt habe.
Jeff
Wenn Sie einen anderen Entwicklerzweig von Remote git checkout -B
abrufen
-1

Es gibt Formen beider Befehle, die ähnlich sind (siehe git-scm docs Version 2.11.1):

git branch <branchname> <start-point>

und

git checkout -b <new_branch> <start_point>

Die letztere Ausführung des ersten Verzweigungsbefehl und dann die Kasse. In dieser Form wird ausdrücklich auf das Dokument von git-branch verwiesen:

Wenn Sie -b angeben, wird ein neuer Zweig erstellt, als ob git-branch [2] aufgerufen und dann ausgecheckt würde

Pshemy108
quelle
1
Dies fügt keine neuen Informationen über die akzeptierte Antwort von 2011 hinzu.
Melpomene
Es werden tatsächlich neue Informationen zum <Startpunkt> hinzugefügt. Was ich persönlich sehr nützlich fand, um Zweige an einem anderen Objekt zu erstellen, ohne zuerst das Objekt auschecken oder den aktuellen Zweig verschieben zu müssen. Die Verwendung von Notationen als [FROM_BRANCH], wenn eigentlich die Git-Referenz gemeint ist, ist meiner Meinung nach nicht sinnvoll.
Pshemy108
Das optionale zweite Argument ist für die Frage nicht relevant. Es ist das gleiche zwischen beiden Befehlen und OP hat nach dem Unterschied gefragt. (Wenn Sie wirklich denken, dass es wichtig ist, hätte ich der akzeptierten Antwort nur einen Kommentar hinzugefügt.)
Melpomene
-1

Im Wesentlichen :

Mit dem A-Git-Zweig können Sie ganz einfach einen Zweig erstellen.

Mit B -git checkout -b können Sie einen Zweig erstellen und gleichzeitig zu diesem wechseln.

Wann wirst du welche verwenden? 1-Git-Zweig, wenn Sie einen Zweig erstellen möchten, aber auf dem aktuellen Zweig bleiben möchten. 2- Git Checkout -b, wenn Sie erstellen und wechseln möchten. Wenn Sie es sich ansehen, ist es intuitiv, einen Zweig zu erstellen und zu diesem zu wechseln. Sie haben also die Wahl :)

user2238769
quelle
4
Dies fügt keine neuen Informationen über die akzeptierte Antwort von 2011 hinzu.
Melpomene