Git
Português (Brasil) ▾Topics ▾Latest version ▾ git-branch last updated in 2.44.0

NOME

git-branch - Lista, cria ou exclui ramificações

RESUMO

git branch [--color[=<quando>] | --no-color] [--show-current]
	[-v [--abbrev=<n> | --no-abbrev]]
	[--column[=<opções>] | --no-column] [--sort=<chaves>]
	[--merged [<commit>]] [--no-merged [<commit>]]
	[--contains [<commit>]] [--no-contains [<commit>]]
	[--points-at <objeto>] [--format=<formato>]
	[(-r | --remotes) | (-a | --all)]
	[--list] [<padrão>…​]
git branch [--track[=(direct|inherit)] | --no-track] [-f]
	[--recurse-submodules] <nome-do-ramo> [<ponto-de-partida>]
git branch (--set-upstream-to=<upstream> | -u <upstream>) [<nome-do-ramo>]
git branch --unset-upstream [<nome-do-ramo>]
git branch (-m | -M) [<ramo-antigo>] <nome-do-ramo>
git branch (-c | -C) [<ramo-antigo>] <novo-ramo>
git branch (-d | -D) [-r] <nome-do-ramo>…​
git branch --edit-description [<nome-do-ramo>]

DESCRIÇÃO

Caso a opção --list seja usada, ou caso não haja argumentos que não sejam opções, as ramificações existentes serão listadas; a ramificação atual será destacada em verde e marcada com um asterisco. Todas as ramificações averiguadas nas árvores de trabalho vinculadas serão destacadas em ciano e marcadas com um sinal de mais. A opção -r faz com que as ramificações de rastreamento remoto sejam listadas, e a opção -a mostra as ramificações locais e as remotas.

Caso um <padrão> seja informado, ele será utilizado como um curinga do shell para restringir a saída das ramificações correspondentes. Caso vários padrões sejam informados, um ramo será exibido caso coincida com qualquer um dos padrões.

Note que ao fornecer um <padrão> você deve utilizar --list; caso contrário, o comando pode ser interpretado como uma criação do ramo.

Com --contains, mostra apenas os ramos que contêm o commit indicado (em outras palavras, os ramos cujos commits do cume são descendentes do commit nomeado), a opção --no-contains inverte isso. Com a opção --merged, apenas as ramificações mescladas no commit indicado (ou seja, as ramificações cujos commits principais são acessíveis a partir do commit indicado) serão listados. Com a opção --no-merged, apenas as ramificações não mescladas no commit indicado serão listados. Se o argumento <commit> estiver ausente, a predefinição será HEAD (ou seja, o cume do ramo atual).

O segundo formulário do comando cria um novo cabeçalho do ramo informado <nome-do-ramo> (nome do ramo0), que aponta para o HEAD atual, ou o <ponto-de-partida> caso seja utilizado. Como um caso especial, para o <ponto-de-partida>, utilize "A...B" como um atalho para a base da mesclagem de A e B caso sejam exatamente uma base para ser mesclada. Você pode deixar de fora no máximo um de A e B, caso onde a predefinição retorna para HEAD.

Observe que isso criará a nova ramificação mas não mudará a árvore de trabalho para ela; para alternar para a nova ramificação utilize "git switch <novo-ramo>".

Quando uma ramificação local é iniciada numa ramificação remotamente monitorada, o Git define a ramificação (especificamente as entradas da configuração branch.<nome>.remote e branch.<nome>.merge) para que o comando git pull mescle adequadamente a partir do ramo monitorado remotamente. Este comportamento pode ser alterado através da variável de configuração global branch.autoSetupMerge. Esta configuração pode ser substituída utilizando as opções --track e --no-track, podendo ser alterada posteriormente utilizando o comando git branch --set-upstream-to.

Com uma opção -m ou -M, <ramo-antigo> será renomeado para <novo-ramo>. Caso o <ramo-antigo> tenha um "reflog" correspondente, ele será renomeado para corresponder ao <novo-ramo>, e uma entrada no "reflog" será criada para lembrar a renomeação do ramo. Se o <novo-ramo> já existir, a opção -M deverá ser usada para impor a renomeação.

As opções -c e -C têm exatamente a mesma semântica que -m e -M, exceto que em vez do ramo que está sendo renomeado, ele será copiado com um novo nome junto com a sua configuração e o reflog .

Com uma opção -d ou -D seja usada, o <nome-do-ramo> será excluído. É possível definir mais de um ramo para a exclusão. Se no momento o ramo já possuir um "reflog", o "reflog" também será excluído.

Utilize a opção -r junto com -d para excluir o monitoramento das ramificações remotas. Observe que só faz sentido excluir o monitoramento das ramificações remotas caso elas não existam mais no repositório remoto ou caso o comando git fetch tenha sido configurado para não resgatá-las novamente. Consulte também o subcomando prune git-remote[1] para conhecer uma maneira de limpar todos os monitoramentos obsoletos das ramificações remotas.

OPÇÕES

-d
--delete

Exclua uma ramificação. A ramificação deve ser totalmente mesclada sua ramificação "upstream" ou no HEAD caso nenhum "upstream" tenha sido definido, utilize --track ou --set-upstream-to.

-D

Um atalho para --delete --force.

--create-reflog

Cria o "reflog" do ramo. Isso ativa o registro de todas as alterações feitas na referência do ramo, permitindo o uso de expressões sha1 com base em data, como "<nome-do-ramo>@{yesterday}". Observe que em repositórios não vazios, por predefinição, os "reflogs" geralmente são ativados pela opção de configuração core.logAllRefUpdates. A forma negada da opção --no-create-reflog apenas substitui a forma anterior da opção --create-reflog, mas atualmente não nega a configuração em core.logAllRefUpdates.

-f
--force

Redefine <nome-do-ramo> para <ponto-de-partida>, ainda que o <nome-do-ramo> já exista. Sem a opção -f, o comando git branch se recusa a alterar uma ramificação já existente. Em combinação com a opção -d (ou --delete), permite excluir o ramo independentemente da sua condição de mesclagem ou se ele aponta para um commit válido. Em combinação com a opção -m (ou --move), permite renomear o ramo ainda que o novo nome do ramo já exista, o mesmo se aplica para a opção`-c` (ou --copy).

Observe que git branch -f <nome_do_ramo> [<ponto-inicial>], mesmo com -f, recusa-se a alterar um ramo já existente ‘<nome_do_ramo>’ que é verificado em outra árvore de trabalho ligada ao mesmo repositório.

-m
--move

Move/renomeia uma ramificação junto com a sua configuração e o reflog.

-M

Atalho para --mover --force.

-c
--copy

Copia uma ramificação, junto com a sua configuração e o reflog.

-C

Atalho para --copy --force.

--color[=<quando>]

Colore as ramificações destacando as ramificações atuais, locais e remotamente rastreadas. O valor sempre deve ser always (a predefinição), never ou auto.

--no-color

Desativar as colorações na ramificação, mesmo quando o arquivo de configuração define como padrão uma saída colorida. O mesmo que --color=never.

-i
--ignore-case

As ramificações de classificação e filtragem não diferenciam maiúsculas de minúsculas.

--omit-empty

Não imprima uma nova linha após a formatação das referências onde o formato se expande para a string vazia.

--column[=<opções>]
--no-column

Exiba lista dos ramos em colunas. Para conhecer a sintaxe da opção, consulte a variável de configuração column.branch. --column e --no-column sem opções são respectivamente o mesmo que always e never.

Esta opção é aplicável apenas no modo não detalhado.

-r
--remotes

Lista ou excluí (se usado com a opção -d) as ramificações monitoradas remotamente. Combine com a opção --list para que coincida com o(s) padrão(ões) opcional(ais).

-a
--all

Lista ambas as ramificações monitoradas remotamente e os ramos locais. Combine com a opção --list para coincidir com o(s) padrão(ões) opcional(ais).

-l
--list

Lista os ramos. Com <padrão>... opcional, por exemplo, git branch --list 'maint-*', lista apenas as ramificações que correspondem ao(s) padrão(ões).

--show-current

Exiba o nome do ramo atual. Na condição onde HEAD esteja desanexado, nada é impresso.

-v
-vv
--verbose

Quando estiver no modo de lista, mostre o sha1 e a linha de assunto do commit para cada cabeçalho, juntamente com a relação com o ramo upstream (se houver). Se usado duas vezes, imprime o caminho da árvore de trabalho vinculada (se houver) junto com o nome da ramificação upstream (consulte também git remote show <remoto>). Observe que o HEAD da árvore de trabalho atual não terá o seu caminho impresso (será sempre o seu diretório atual).

-q
--quiet

Seja mais silencioso ao criar ou excluir uma ramificação, suprimindo as mensagens que não sejam de erro.

--abbrev=<n>

Na listagem detalhada que mostra o nome do objeto do commit, mostre o prefixo mais curto que tenha pelo menos <n> dígitos hexadecimais e que faça uma referência exclusiva ao objeto. O valor predefinido é 7 e pode ser substituído pela opção de configuração core.abbrev.

--no-abbrev

Exibe o sha1 completo na saída da listagem em vez de abreviá-los.

-t
--track[=(direct|inherit)]

Ao criar uma nova ramificação, configure as entradas da configuração branch.<nome>.remote e branch.<nome>.merge para definir a configuração do monitoramento "upstream" partindo da nova ramificação. Esta configuração instruirá o git a exibir o relacionamento entre as duas ramificações com o git status e com o git branch -v. Além disso, ele direciona o git pull sem argumentos para extrair do "upstream" quando o novo ramo for retirado.

O exato ramo "upstream" é escolhido dependendo do argumento opcional: -t, --track ou --track=direct, significa usar o próprio ramo do ponto inicial como o "upstream"; já a opção --track=inherit significa copiar a configuração "upstream" da ramificação do ponto inicial.

A variável de configuração branch.autoSetupMerge determina como os comandos git switch, git checkout e git branch devem se comportar quando nem uma opção --track nem --no-track são usados:

É predefinido que true comporte-se como se a opção --track=direct fosse usada sempre que o ponto de partida for um ramo rastreado remotamente. false se comporta como se a opção --no-track fosse usada. always se comporta como se a opção --track=direct fosse usada. inherit se comporta como se a opção --track=inherit fosse usada. simple se comporta como se a opção --track=direct fosse usada apenas quando o ponto de partida for um ramo rastreado remotamente e o novo ramo tenha o mesmo nome que o ramo remoto.

Consulte git-pull[1] e git-config[1] para uma discussão adicional sobre como as opções branch.<nome>.remote e branch.<nome>.merge são utilizadas.

--no-track

Não configure o "upstream", ainda que a variável de configuração branch.autoSetupMerge seja definida.

--recurse-submodules

ESSA OPÇÃO É EXPERIMENTAL! Faz com que o comando atual se repita no submódulos caso submodule.propagateBranches esteja ativado. Consulte submodule.propagateBranches em git-config[1]. No momento, há apenas suporte para a criação do ramo.

Quando usado na criação dos ramos, um novo ramo <nome-do-ramo> será criado no super projeto (superproject) e todos os submódulos no super projeto <ponto-de-início>. Nos submódulos, o ramo irá apontar para o commit do submódulo no <ponto-de-inicio> do super projeto, porém a informação do rastreamento do ramo será configurado com base no submódulo’s dos ramos locais e remotos por exemplo. O ramo git --recurse-submodules topic origin/main irá criar o ramo do submódulo "topic" que aponta para o commit do submódulo no super projeto "origin/main", contudo rastreia o submódulos "origin/main".

--set-upstream

Como essa opção tinha uma sintaxe confusa, ela não é mais suportada. Em vez disso use --track ou --set-upstream-to.

-u <upstream>
--set-upstream-to=<upstream>

Configure as informações do monitoramento do <nome-do-ramo> para que o <upstream> seja considerado o ramo "upstream" do <nome-do-ramo>. Caso nenhum <nome-do-ramo> seja utilizado, então a predefinição retorna para o ramo atual.

--unset-upstream

Remova as informações "upstream" para o <nome-do-ramo>. Caso nenhuma ramificação seja utilizada, a predefinição retorna para a ramificação atual.

--edit-description

Abra um editor e edite o texto para explicar para que serve a ramificação, para ser utilizado por outros comandos (format-patch, request-pull e merge por exemplo (se ativado)). Podem ser utilizadas as explicações em mais de uma linha.

--contains [<commit>]

Listar apenas as ramificações que contenham o commit informado (HEAD, caso nenhum seja informado). Implica no uso da opção --list.

--no-contains [<commit>]

Liste apenas as ramificações que não contenha o commit informado (HEAD, caso nenhum seja informado). Implica no uso da opção --list.

--merged [<commit>]

Liste apenas as ramificações cujas dicas são acessíveis a partir do commit informado (HEAD, caso nenhum seja informado). Implica no uso da opção --list.

--no-merged [<commit>]

Liste apenas as ramificações cujas dicas não possam ser acessadas a partir do commit informado (HEAD, caso nenhum seja informado). Implica no uso da opção --list.

<nome-do-ramo>

O nome do rapara para criar ou para excluir. O novo nome do ramo deve passar em todas as verificações definidas por git-check-ref-format[1]. Algumas dessas verificações podem restringir os caracteres permitidos num nome do ramo.

<início-ponto>

O novo cabeçalho do ramo apontará para este commit. Ele pode ser usado como um nome do ramo, um ID do commit ou uma etiqueta. Se essa opção for omitida, em seu lugar o HEAD atual será usado.

<ramo-antigo>

O nome de um ramo já existente. Se essa opção for omitida, em seu lugar o nome da ramificação atual será usado.

<novo-ramo>

Um novo nome para um ramo já existente. Se aplicam as mesmas restrições para <nome-do-ramo>.

--sort=<chave>

Classifique com base na chave informada. O prefixo - é utilizado para classificar em ordem decrescente. Você pode utilizar a opção --sort=<chave> mais de uma vez; nesse caso, a última chave se torna a chave primária. As chaves compatíveis são as mesmas que as do git for-each-ref. A predefinição da ordem da classificação retorna para o valor configurado para a variável branch.sort, caso exista ou a classificação com base no nome completo da "ref" (incluindo o prefixo refs/...). Isso lista primeiro o HEAD desanexado (caso esteja presente), depois as ramificações locais e finalmente as ramificações monitoradas remotamente. Consulte git-config[1].

--points-at <objeto>

Apenas lista os objetos das ramificações informadas.

--format <formato>

Uma string que interpola %(fieldname) de uma referência da ramificação que está sendo mostrada e o objeto para onde ela aponta. O formato é o mesmo do git-for-each-ref[1].

CONFIGURAÇÃO

O pager.branch só é respeitado ao listar as ramificações, ou seja, quando a opção --list é usada ou está implícito. A predefinição é usar um pager. Consulte git-config[1].

Warning

Missing pt_BR/includes/cmd-config-section-rest.txt

See original version for this content.

Warning

Missing pt_BR/config/branch.txt

See original version for this content.

EXEMPLOS

Inicie o desenvolvimento a partir de uma tag conhecida
$ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6
$ cd my2.6
$ git branch my2.6.14 v2.6.14   (1)
$ git switch my2.6.14
  1. Esta etapa e a próxima poderiam ser combinadas numa única etapa com "checkout -b my2.6.14 v2.6.14".

Exclua um ramo que seja desnecessário
$ git clone git://git.kernel.org/.../git.git my.git
$ cd my.git
$ git branch -d -r origin/todo origin/html origin/man   (1)
$ git branch -D test                                    (2)
  1. Exclua as ramificações monitoradas remotamente "todo", "html"e "man". O próximo fetch ou pull os criará novamente, a menos que você os configure para que não seja feito. Consulte git-fetch[1].

  2. Exclua o ramo "teste", mesmo que o ramo "principal" (ou o ramo que está com a averiguação no momento) não tenha todos os commits do ramo do teste.

Listando as ramificações de um determinado ponto remoto
$ git branch -r -l '<remoto>/<padrão>'                 (1)
$ git for-each-ref 'refs/remotes/<remoto>/<padrão>'    (2)
  1. Utilizando a opção -a entraria em conflito com <remoto> em quaisquer ramificações locais que foram prefixadas com o mesmo padrão <remoto>.

  2. for-each-ref pode ter uma ampla gama de opções. Consulte git-for-each-ref[1] Consulte git-for-each-ref[1]

Os padrões normalmente precisam ser citados.

OBSERVAÇÕES

Caso esteja criando uma nova ramificação para o qual deseja alternar imediatamente é mais fácil usar o comando "git switch" com a sua opção -c para fazer a mesma coisa utilizando apenas um único comando.

As opções --contains, --no-contains, --merged e --no-merged servem para quatro finalidades relacionadas, porém diferentes:

  • --contains <commit> é utilizado para encontrar todas as ramificações que precisarão de atenção especial caso <commit> precise de um novo "rebase" ou corrigido, uma vez que essas ramificações contêm o <commit> informato.

  • --no-contains <commit> é o inverso, isto é, as ramificações que não contêm o <commit> informado.

  • --merged é utilizado para encontrar todas as ramificações que podem ser excluídas com segurança, uma vez que essas ramificações são totalmente contidas pelo HEAD.

  • --no-merged é utilizado para encontrar as ramificações candidatas a serem mescladas no HEAD, uma vez que essas ramificações não são totalmente contidas pelo HEAD.

Ao combinar diversos filtros a opção --contains e a opção --no-contains, faz referências apenas aos que contenha pelo menos um dos commits --contains e não contenha nenhum dos commits mostrados com --no-contains.

Ao combinar diversos filtros a opção --merged e a opção --no-merged, faz referências apenas aos que sejam acessíveis a partir um dos commits --merged e de nenhum dos commits mostrados com --no-merged.

GIT

Parte do conjunto git[1]

scroll-to-top