Ricerca…
Sintassi
-
git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
-
git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
-
git branch --unset-upstream [<branchname>]
-
git branch (-m | -M) [<oldbranch>] <newbranch>
-
git branch (-d | -D) [-r] <branchname>…
-
git branch --edit-description [<branchname>]
-
git branch [--color[=<when>] | --no-color] [-r | -a] [--list] [-v [--abbrev=<length> | --no-abbrev]] [--column[=<options>] | --no-column] [(--merged | --no-merged | --contains) [<commit>]] [--sort=<key>] [--points-at <object>] [<pattern>…]
Parametri
Parametro | Dettagli |
---|---|
-d, --delete | Elimina un ramo. Il ramo deve essere completamente fuso nel suo ramo upstream, o in HEAD se non è stato impostato upstream con --track o --set-upstream |
-D | Collegamento per --delete --force |
-m, --move | Sposta / rinomina un ramo e il reflog corrispondente |
-M | Collegamento per --move --force |
-r, --remotes | Elenca o elimina (se usato con -d) i rami di tracciamento remoto |
-a, --tutti | Elenca sia i rami di localizzazione remota che i rami locali |
--elenco | Attiva la modalità lista. git branch <pattern> proverebbe a creare un ramo, usa git branch --list <pattern> per elencare i branch corrispondenti |
--set-monte | Se il ramo specificato non esiste ancora o se è stato assegnato --force , funziona esattamente come --track . Altrimenti imposta la configurazione come --track dovrebbe quando si crea il ramo, tranne che dove il punto di diramazione non è cambiato |
Osservazioni
Ogni repository git ha uno o più rami . Un ramo è un riferimento denominato al HEAD
di una sequenza di commit.
Un repository git ha un ramo corrente (indicato da un *
nell'elenco dei nomi dei rami stampato dal comando git branch
), ogni volta che si crea un nuovo commit con il comando git commit
, il nuovo commit diventa HEAD
del ramo corrente, e il precedente HEAD diventa il genitore del nuovo commit.
Un nuovo ramo avrà lo stesso HEAD
del ramo da cui è stato creato fino a quando non viene eseguito il commit di qualcosa sul nuovo ramo.
Elenco dei rami
Git fornisce più comandi per elencare i rami. Tutti i comandi usano la funzione di git branch
, che fornirà un elenco di alcuni rami, a seconda di quali opzioni sono messe sulla riga di comando. Git, se possibile, indica il ramo attualmente selezionato con una stella accanto ad esso.
Obbiettivo | Comando |
---|---|
Elenca i rami locali | git branch |
Elenca i rami locali dettagliati | git branch -v |
Elenco delle filiali remote e locali | git branch -a OR git branch --all |
Elenco dei rami remoti e locali (dettagliato) | git branch -av |
Elenca i rami remoti | git branch -r |
Elenco dei rami remoti con l'ultimo commit | git branch -rv |
Elenca i rami uniti | git branch --merged |
Elenco rami non raggruppati | git branch --no-merged |
Elenco dei rami contenenti commit | git branch --contains [<commit>] |
Note :
- Aggiungendo una
v
aggiuntiva a-v
es.$ git branch -avv
o$ git branch -vv
stamperà anche il nome del ramo upstream. - I rami mostrati in colore rosso sono rami remoti
Creare e controllare nuovi rami
Per creare un nuovo ramo, rimanendo nel ramo attuale, utilizzare:
git branch <name>
Generalmente, il nome della filiale non deve contenere spazi ed è soggetto ad altre specifiche elencate qui . Per passare a un ramo esistente:
git checkout <name>
Per creare un nuovo ramo e passare ad esso:
git checkout -b <name>
Per creare un ramo in un punto diverso dall'ultimo commit del ramo corrente (noto anche come HEAD), utilizzare uno di questi comandi:
git branch <name> [<start-point>]
git checkout -b <name> [<start-point>]
<start-point>
può essere qualsiasi revisione nota a git (ad esempio, un altro nome di ramo, commit SHA o un riferimento simbolico come HEAD o un nome di tag):
git checkout -b <name> some_other_branch
git checkout -b <name> af295
git checkout -b <name> HEAD~5
git checkout -b <name> v1.0.5
Per creare un ramo da un ramo remoto (il predefinito <remote_name>
è l'origine):
git branch <name> <remote_name>/<branch_name>
git checkout -b <name> <remote_name>/<branch_name>
Se un determinato nome di ramo viene trovato solo su un telecomando, puoi semplicemente usarlo
git checkout -b <branch_name>
che è equivalente a
git checkout -b <branch_name> <remote_name>/<branch_name>
A volte potrebbe essere necessario spostare molti dei tuoi recenti commit in una nuova filiale. Questo può essere ottenuto per ramificazione e "rollback", in questo modo:
git branch <new_name>
git reset --hard HEAD~2 # Go back 2 commits, you will lose uncommitted work.
git checkout <new_name>
Ecco una spiegazione illustrativa di questa tecnica:
Initial state After git branch <new_name> After git reset --hard HEAD~2
newBranch newBranch
↓ ↓
A-B-C-D-E (HEAD) A-B-C-D-E (HEAD) A-B-C-D-E (HEAD)
↑ ↑ ↑
master master master
Elimina un ramo localmente
$ git branch -d dev
Elimina il ramo denominato dev
se le sue modifiche vengono unite a un altro ramo e non andranno perse. Se il ramo dev
contiene modifiche che non sono state ancora unite e che verrebbero perse, git branch -d
non riuscirà:
$ git branch -d dev
error: The branch 'dev' is not fully merged.
If you are sure you want to delete it, run 'git branch -D dev'.
Per il messaggio di avviso, è possibile forzare l'eliminazione del ramo (e perdere eventuali modifiche non raggruppate in quel ramo) utilizzando il flag -D
:
$ git branch -D dev
Scopri una nuova filiale che tiene traccia di un ramo remoto
Esistono tre modi per creare una nuova feature
diramazione che tiene traccia origin/feature
ramo remoto:
-
git checkout --track -b feature origin/feature
, -
git checkout -t origin/feature
, -
git checkout feature
- presupponendo che non ci sia un ramo difeature
locale e che ci sia un solo telecomando con il ramo difeature
.
Per impostare upstream per tracciare il ramo remoto - digitare:
-
git branch --set-upstream-to=<remote>/<branch> <branch>
-
git branch -u <remote>/<branch> <branch>
dove:
-
<remote>
può essere:origin
,develop
o quello creato dall'utente, -
<branch>
è il ramo dell'utente da monitorare su remoto.
Per verificare quali filiali remote eseguono il monitoraggio delle filiali locali:
-
git branch -vv
Rinominare un ramo
Rinomina il ramo che hai estratto:
git branch -m new_branch_name
Rinominare un altro ramo:
git branch -m branch_you_want_to_rename new_branch_name
Sovrascrivi un singolo file nella directory di lavoro corrente con lo stesso da un altro ramo
Il file estratto sovrascriverà le modifiche non ancora commited che hai fatto in questo file.
Questo comando controllerà il file file.example
(che si trova nel path/to/
della directory path/to/
) e sovrascrive le eventuali modifiche apportate a questo file.
git checkout some-branch path/to/file
some-branch
può essere qualsiasi cosa tree-ish
nota per git (vedi Revision Selection e gitrevisions per maggiori dettagli)
Devi aggiungere --
prima del percorso se il tuo file potrebbe essere scambiato per un file (opzionale altrimenti). Non è possibile fornire più opzioni dopo il --
.
git checkout some-branch -- some-file
Il secondo some-file
è un file in questo esempio.
Elimina un ramo remoto
Per eliminare un ramo nel repository remoto di origin
, è possibile utilizzare per Git versione 1.5.0 e successive
git push origin :<branchName>
e dalla versione 1.7.0 di Git, è possibile eliminare un ramo remoto usando
git push origin --delete <branchName>
Per eliminare un ramo di localizzazione remota locale:
git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter
git fetch <remote> --prune # Delete multiple obsolete tracking branches
git fetch <remote> -p # Shorter
Per eliminare un ramo localmente. Nota che questo non cancellerà il ramo se ha delle modifiche non raggruppate:
git branch -d <branchName>
Per eliminare un ramo, anche se ha modifiche non raggruppate:
git branch -D <branchName>
Creare un ramo orfano (es. Ramo senza commit genitore)
git checkout --orphan new-orphan-branch
Il primo impegno fatto su questo nuovo ramo non avrà genitori e sarà la radice di una nuova storia totalmente disconnessa da tutti gli altri rami e commit.
Spingere il ramo su remoto
Utilizzare per inviare i commit effettuati sul ramo locale a un repository remoto.
Il comando git push
accetta due argomenti:
- Un nome remoto, ad esempio,
origin
- Un nome di ramo, ad esempio,
master
Per esempio:
git push <REMOTENAME> <BRANCHNAME>
Ad esempio, di solito esegui git push origin master
per inviare le modifiche locali al tuo repository online.
Usando -u
(abbreviazione di --set-upstream
) imposterà le informazioni di tracciamento durante la spinta.
git push -u <REMOTENAME> <BRANCHNAME>
Per impostazione predefinita, git
spinge il ramo locale in un ramo remoto con lo stesso nome. Ad esempio, se si dispone di una locale chiamata new-feature
, se si preme il ramo locale verrà creata anche una new-feature
diramazione remota. Se si desidera utilizzare un nome diverso per il ramo remoto, aggiungere il nome remoto dopo il nome filiale locale, separate da :
:
git push <REMOTENAME> <LOCALBRANCHNAME>:<REMOTEBRANCHNAME>
Sposta il ramo corrente HEAD in un commit arbitrario
Un ramo è solo un puntatore a un commit, quindi puoi muoverlo liberamente. Per fare in modo che il ramo si riferisca al commit aabbcc
, emettere il comando
git reset --hard aabbcc
Si noti che questo sovrascriverà il commit corrente del ramo e, in questo modo, la sua intera cronologia. Potresti perdere del lavoro emettendo questo comando. In questo caso, puoi utilizzare il reflog per recuperare i commit persi. Si può consigliare di eseguire questo comando su un nuovo ramo invece che su quello corrente.
Tuttavia, questo comando può essere particolarmente utile quando si esegue il rebasing o si eseguono altre modifiche della cronologia di grandi dimensioni.
Passaggio rapido al ramo precedente
È possibile passare rapidamente al ramo precedente utilizzando
git checkout -
Ricerca nei rami
Per elencare i rami locali che contengono un commit o un tag specifico
git branch --contains <commit>
Per elencare i rami locali e remoti che contengono un commit o un tag specifico
git branch -a --contains <commit>