Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.51.1 → 2.51.2 no changes
-
2.51.0
2025-08-18
- 2.50.1 no changes
-
2.50.0
2025-06-16
- 2.44.1 → 2.49.1 no changes
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 no changes
-
2.43.0
2023-11-20
- 2.41.1 → 2.42.4 no changes
-
2.41.0
2023-06-01
- 2.40.1 → 2.40.4 no changes
-
2.40.0
2023-03-12
- 2.39.4 → 2.39.5 no changes
-
2.39.3
2023-04-17
- 2.38.1 → 2.39.2 no changes
-
2.38.0
2022-10-02
- 2.37.1 → 2.37.7 no changes
-
2.37.0
2022-06-27
- 2.36.1 → 2.36.6 no changes
-
2.36.0
2022-04-18
- 2.35.1 → 2.35.8 no changes
-
2.35.0
2022-01-24
- 2.34.1 → 2.34.8 no changes
-
2.34.0
2021-11-15
- 2.33.2 → 2.33.8 no changes
-
2.33.1
2021-10-12
- 2.31.1 → 2.33.0 no changes
-
2.31.0
2021-03-15
- 2.30.1 → 2.30.9 no changes
-
2.30.0
2020-12-27
- 2.29.1 → 2.29.3 no changes
-
2.29.0
2020-10-19
- 2.28.1 no changes
-
2.28.0
2020-07-27
- 2.23.1 → 2.27.1 no changes
-
2.23.0
2019-08-16
- 2.22.2 → 2.22.5 no changes
-
2.22.1
2019-08-11
-
2.22.0
2019-06-07
- 2.21.1 → 2.21.4 no changes
-
2.21.0
2019-02-24
- 2.20.1 → 2.20.5 no changes
-
2.20.0
2018-12-09
- 2.19.1 → 2.19.6 no changes
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 no changes
-
2.18.0
2018-06-21
- 2.17.0 → 2.17.6 no changes
-
2.16.6
2019-12-06
-
2.15.4
2019-12-06
-
2.14.6
2019-12-06
-
2.13.7
2018-05-22
-
2.12.5
2017-09-22
- 2.10.5 → 2.11.4 no changes
-
2.9.5
2017-07-30
- 2.8.6 no changes
-
2.7.6
2017-07-30
-
2.6.7
2017-05-05
- 2.5.6 no changes
-
2.4.12
2017-05-05
- 2.1.4 → 2.3.10 no changes
-
2.0.5
2014-12-17
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
HEADcaso nenhum "upstream" tenha sido definido, utilize--trackou--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-reflogapenas substitui a forma anterior da opção--create-reflog, mas atualmente não nega a configuração emcore.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),neverouauto. - --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.--columne--no-columnsem 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--listpara 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
--listpara coincidir com o(s) padrão(ões) opcional(ais). - -l
- --list
-
Lista os ramos. Com <padrão>... opcional, por exemplo,
gitbranch--listmaint-*', lista apenas as ramificações que correspondem ao(s) padrão(ões). - --show-current
-
Exiba o nome do ramo atual. Na condição onde
HEADesteja 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
gitremoteshow<remoto>). Observe que oHEADda á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>.remoteebranch.<nome>.mergepara 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 ogitstatuse com ogitbranch-v. Além disso, ele direciona ogitpullsem argumentos para extrair do "upstream" quando o novo ramo for retirado.O exato ramo "upstream" é escolhido dependendo do argumento opcional:
-t,--trackou--track=direct, significa usar o próprio ramo do ponto inicial como o "upstream"; já a opção--track=inheritsignifica copiar a configuração "upstream" da ramificação do ponto inicial.A variável de configuração branch.autoSetupMerge determina como os comandos
gitswitch,gitcheckoutegitbranchdevem se comportar quando nem uma opção--tracknem--no-tracksão usados:É predefinido que
truecomporte-se como se a opção--track=directfosse usada sempre que o ponto de partida for um ramo rastreado remotamente.falsese comporta como se a opção--no-trackfosse usada.alwaysse comporta como se a opção--track=directfosse usada.inheritse comporta como se a opção--track=inheritfosse usada.simplese comporta como se a opção--track=directfosse 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>.remoteebranch.<nome>.mergesão utilizadas. - --no-track
-
Não configure o "upstream", ainda que a variável de configuração
branch.autoSetupMergeseja definida. - --recurse-submodules
-
ESSA OPÇÃO É EXPERIMENTAL! Faz com que o comando atual se repita no submódulos caso
submodule.propagateBranchesesteja ativado. Consultesubmodule.propagateBranchesem 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-submodulestopicorigin/mainirá 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
--trackou--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-pullemergepor 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
HEADatual 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 dogitfor-each-ref. A predefinição da ordem da classificação retorna para o valor configurado para a variávelbranch.sort, caso exista ou a classificação com base no nome completo da "ref" (incluindo o prefixorefs/...). Isso lista primeiro oHEADdesanexado (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].
Tudo acima desta linha nesta seção não está incluído na documentação git-config[1]. O conteúdo que segue é o mesmo que se encontra lá:
|
Warning
|
Missing 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
-
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)
-
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].
-
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)
-
Utilizando a opção
-aentraria em conflito com <remoto> em quaisquer ramificações locais que foram prefixadas com o mesmo padrão <remoto>. -
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 peloHEAD. -
--no-mergedé utilizado para encontrar as ramificações candidatas a serem mescladas noHEAD, uma vez que essas ramificações não são totalmente contidas peloHEAD.
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.
VEJA TAMBÉM
git-check-ref-format[1], git-fetch[1], git-remote[1], “Compreendendo a história: O que é um ramo?” no Manual do Usuário Git.
GIT
Parte do conjunto git[1]