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

NOME

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

RESUMO

git branch [--color[=<quando>] | --no-color] [--show-current]
	[-v [--abbrev=<comprimento> | --no-abbrev]]
	[--column[=<opções>] | --no-column] [--sort=<chaves>]
	[(--merged | --no-merged) [<commit>]]
	[--contains [<commit]] [--no-contains [<commit>]]
	[--points-at <objeto>] [--format=<formato>]
	[(-r | --remotes) | (-a | --all)]
	[--list] [<padrão>…​]
git branch [--track | --no-track] [-f] <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 utilizada ou caso não haja argumentos não opcionais, as ramificações existentes serão listadas; o ramo atual será destacado em verde e marcado com um asterisco. Quaisquer ramificações retiradas das áreas de trabalho vinculadas, serão destacadas em ciano e marcadas com um sinal de adição. A opção -r faz com que as ramificações monitoradas remotamente sejam listadas, a opção -a exibe 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 a opção --contains, exibe apenas os ramos que contenham o commit informado (em outras palavras, os ramos cujos commits do topo sejam os descendentes do commit informado),--no-contains funciona ao contrário. Com a opção --merged, apenas as ramificações mescladas no commit informado serão listados (ou seja, os ramos cujos commits do cume esteja acessível a partir do commit informado). Com --no-merged', serão listados apenas as ramificações não mescladas do commit informado. Caso o argumento `<commit> esteja ausente, a predefinição retorna para HEAD (ou seja, o 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 em uma 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, o ramo antigo <ramo-antigo> será renomeado para o novo ramo <novo-ramo>. Caso o <ramo-antigo> tenha um reflog correspondente, ele será renomeado para coincidir com o <novo-ramo>, uma entrada de reflog será criada para lembrar da renomeação do ramo. Caso <novo-ramo> exista, -M deve ser utilizado para impor que a renomeação aconteça.

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

Com uma opção -d ou -D, o <nome-do-ramo> será excluído. Você pode informar mais de uma ramificação para ser excluído. Caso o ramo tiver atualmente um reflog, este 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

Crie o reflog do ramo. Ativa a gravação de todas as alterações feitas no "ref" do ramo, permitindo a utilização de expressões sha1 baseadas na data, como <nome-do-ramo>@\{yesterday}. Observe que nos repositórios que não estiverem vazios, é predefinido que os reflogs geralmente sejam ativados através da variável de configuração core.logAllRefUpdates. A forma negada o comando --no-create-reflog substitui apenas um --create-reflog anterior, mas atualmente não nega a configuração do core.logAllRefUpdates.

-f
--force

Redefina o <nome-do-ramo> para <startpoint>, mesmo se o <nome-do-ramo> já existir. Sem o -f, o comando git branch se recusa a alterar uma ramificação já existente. Em combinação com -d (ou --delete), permita excluir a ramificação, independentemente da sua condição de mesclagem. Em combinação com -m (ou --move), permita renomear a ramificação, mesmo que o novo nome do ramo já exista, o mesmo se aplica com -c (ou --copy).

-m
--move

Mover / renomear uma ramificação e o reflog correspondente.

-M

Atalho para --mover --força.

-c
--copy

Copie uma ramificação e o reflogo correspondente.

-C

Shortcut for --cópia --força.

--color[=<quando>]

Colora as ramificações para dar destaque nas ramificações atuais, locais e monitoradas remotamente. Always (sempre) é o valor predefinido, as outras opções são "never" ou "auto".

--no-color

Desative as cores do ramo, mesmo quando o arquivo de configuração informar o valor predefinido para a saída das cores. O mesmo que --color=never.

-i
--ignore-case

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

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

Exibir a lista das ramificações em colunas. Consulte a variável de configuração column.branch para conhecer a sintaxe da opção. As opções --column e --no-column sem nenhum argumento são equivalentes a always e never respectivamente.

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

-r
--remotes

Liste ou exclua (se utilizado com -d) as ramificações rastreadas remotamente. Combine com a opção --list para coincidir com os padrões opcionais.

-a
--all

Liste ambas as ramificações rastreadas remotamente e as ramificações locais. Combine com a opção --list para que coincida com os padrões opcionais.

-l
--list

Lista as ramificações. Com o <padrão>... opcional, o comando git branch --list 'maint-*', lista apenas as ramificações que coincidam com os padrõ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 listagem, exiba o sha1 e confirme a linha do assunto para cada cabeçalho, juntamente com o relacionamento com o ramo "upstream" (caso haja). Se utilizado duas vezes, exiba a vinculação do caminho da árvore de trabalho (caso haja) e o nome do ramo "upstream" (consulte também git remote show <remoto>). Observe que o HEAD da árvore de trabalho atual não terá o seu caminho mostrado (sempre será 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.

--abrev=<comprimento>

Altere o comprimento mínimo da exibição do sha1 na listagem de saída. O valor predefinido é 7, pode ser substituído através da variável de configuração core.abbrev.

--no-abbrev

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

-t
--track

Ao criar uma nova ramificação, configure as entradas da configuração branch.<nome>.remote e branch.<nome>.merge para marcar a ramificação do ponto do início como "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.

Este é o comportamento predefinido quando o ponto inicial for uma ramificação rastreada remotamente. Defina a variável de configuração branch.autoSetupMerge como false caso queira que o git switch, git checkout e o git branch sempre se comportem como se a opção --no-track fosse utilizada. Defina-o como always caso queira que este comportamento quando o ponto de partida for uma ramificação local ou rastreada remotamente.

--no-track

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

--set-upstream

Como esta opção tinha a sintaxe confusa, agora ela é obsoleta. Utilize --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, é incompatível com a opção --no-merged.

--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, é incompatível com --merged.

<nome-do-ramo>

O nome do ramo que será criada ou excluída. O nome da nova ramificação deve passar em todas as verificações definidas pelo git-check-ref-format[1]. Algumas dessas verificações podem restringir os caracteres permitidos no nome de uma ramificação.

<ponto-de-partida>

O cabeçalho da nova ramificação apontará para este commit. Pode ser utilizado como um nome do ramo, um ID do commit ou uma tag. Caso esta opção seja omitida, o HEAD atual será utilizado.

<ramo-antigo>

O nome de uma ramificação existente que será renomeada.

<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 cadeia de caracteres que interpola %(fieldname) de uma tag "ref" que está sendo exibida e o objeto para o qual ele aponta. O formato é o mesmo do git-for-each-ref[1].

CONFIGURAÇÃO

O pager.branch é respeitado apenas ao listar as ramificações, ou seja, quando a opção --list é utilizado ou implícito. A predefinição é utilizar um pager. Consulte git-config[1].

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 em uma ú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 rastreadas remotamente "todo", "html" e "man". O próximo fetch (resgate) ou pull (captura) os criará novamente a menos que você os configure para não fazê-lo. 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.

GIT

Parte do conjunto git[1]