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 di feature locale e che ci sia un solo telecomando con il ramo di feature .

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.

fonte

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>


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow