Qual è la differenza tra "git branch" e "git checkout -b"?


Risposte:


259

git checkout -b BRANCH_NAMEcrea un nuovo ramo e controlla il nuovo ramo mentre git branch BRANCH_NAMEcrea un nuovo ramo ma ti lascia sullo stesso ramo.

In altre parole, git checkout -b BRANCH_NAMEfa quanto segue per te.

git branch BRANCH_NAME    # create a new branch
git checkout BRANCH_NAME  # then switch to the new branch

44

git branch crea il ramo ma rimani nel ramo corrente che hai estratto.

git checkout -b crea un ramo e lo verifica.

Potrebbe essere considerata una forma abbreviata di:

git branch name
git checkout name

Diciamo piuttosto: "git branch crea il ramo ma rimani nel ramo corrente DA CUI hai verificato."
Akash Verma,

28
  • git branch: Mostra tutti i tuoi rami
  • git branch newbranch: Crea un nuovo ramo
  • git checkout -b newbranch: Crea un nuovo ramo e passa immediatamente a quel ramo. È lo stesso git branch newbranchseguito da git checkout newbranch.

24

Sintassi completa:

git checkout -b [NEW_BRANCH] [FROM_BRANCH]

[FROM_BRANCH] è facoltativo. Se non è presente FROM_BRANCH, git utilizzerà il ramo corrente.


7

C'è anche un'altra bandiera da menzionare, che è relativa a questi ..

git checkout -B BRANCH_NAME

Questo è un comando molto utile che ho usato di recente. Questo comando estrae il ramo specificato e reimposta il ramo in base al ramo di origine.


2
Puoi spiegare di più? Non so cosa significhi il reset per git
Mikaël Mayer

3
Dal manuale su 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,

Quindi vuoi dire che puoi riutilizzare un ramo esistente?
Mikaël Mayer,

1
È checkout -Bpericoloso se il ramo a cui stai passando è condiviso da altri? L'ho usato di recente e mi è sembrato di fondere automaticamente le modifiche nell'altro ramo con il ramo in cui sono passato.
Jeff,

se prendi un altro ramo di sviluppatori da remoto e fai un git checkout -Bsì, si
unirebbe

-1

Esistono forme di entrambi i comandi simili (guardando git-scm docs versione 2.11.1):

git branch <branchname> <start-point>

e

git checkout -b <new_branch> <start_point>

La seconda esecuzione del comando primo ramo e quindi aggiungendo cassa. In quella forma riferimenti espliciti al documento di git-branch:

Se si specifica -b, viene creato un nuovo ramo come se fosse stato chiamato git-branch [2] e poi estratto


1
Ciò non aggiunge alcuna nuova informazione sulla risposta accettata dal 2011.
melpomene,

In realtà aggiunge nuove informazioni sul <start-point>. Che ho trovato personalmente molto utile per creare rami su oggetti localizzati altrove senza dover prima verificare l'oggetto o spostare il ramo corrente. Usare le notazioni come [FROM_BRANCH] quando in realtà si intende il riferimento git non è utile secondo me.
Pshemy108

Il secondo argomento facoltativo non è pertinente alla domanda. È lo stesso tra entrambi i comandi e OP stava chiedendo la differenza. (Se pensi davvero che sia essenziale, avrei solo aggiunto un commento alla risposta accettata.)
melpomene

-1

Essenzialmente :

A-git branch ti consente di creare un ramo semplice e chiaro.

B -git checkout -b ti consente di creare un ramo e passare ad esso allo stesso tempo.

Quando userete quale? 1- git branch quando si desidera creare un ramo ma rimanere sul ramo corrente. 2- git checkout -b quando si desidera creare e cambiare. Se lo guardi è intuitivo creare un ramo e passare ad esso. Quindi la scelta è tua :)


4
Ciò non aggiunge alcuna nuova informazione sulla risposta accettata dal 2011.
melpomene,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.