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.44.1 → 2.47.1 no changes
- 2.44.0 02/23/24
- 2.43.1 → 2.43.5 no changes
- 2.43.0 11/20/23
- 2.41.1 → 2.42.3 no changes
- 2.41.0 06/01/23
- 2.40.1 → 2.40.3 no changes
- 2.40.0 03/12/23
- 2.39.4 → 2.39.5 no changes
- 2.39.3 04/17/23
- 2.38.1 → 2.39.2 no changes
- 2.38.0 10/02/22
- 2.37.1 → 2.37.7 no changes
- 2.37.0 06/27/22
- 2.36.1 → 2.36.6 no changes
- 2.36.0 04/18/22
- 2.35.1 → 2.35.8 no changes
- 2.35.0 01/24/22
- 2.34.1 → 2.34.8 no changes
- 2.34.0 11/15/21
- 2.33.2 → 2.33.8 no changes
- 2.33.1 10/12/21
- 2.31.1 → 2.33.0 no changes
- 2.31.0 03/15/21
- 2.30.1 → 2.30.9 no changes
- 2.30.0 12/27/20
- 2.29.1 → 2.29.3 no changes
- 2.29.0 10/19/20
- 2.28.1 no changes
- 2.28.0 07/27/20
- 2.23.1 → 2.27.1 no changes
- 2.23.0 08/16/19
- 2.22.2 → 2.22.5 no changes
- 2.22.1 08/11/19
- 2.22.0 06/07/19
- 2.21.1 → 2.21.4 no changes
- 2.21.0 02/24/19
- 2.20.1 → 2.20.5 no changes
- 2.20.0 12/09/18
- 2.19.1 → 2.19.6 no changes
- 2.19.0 09/10/18
- 2.18.1 → 2.18.5 no changes
- 2.18.0 06/21/18
- 2.17.0 → 2.17.6 no changes
- 2.16.6 12/06/19
- 2.15.4 12/06/19
- 2.14.6 12/06/19
- 2.13.7 05/22/18
- 2.12.5 09/22/17
- 2.10.5 → 2.11.4 no changes
- 2.9.5 07/30/17
- 2.8.6 no changes
- 2.7.6 07/30/17
- 2.6.7 05/05/17
- 2.5.6 no changes
- 2.4.12 05/05/17
- 2.1.4 → 2.3.10 no changes
- 2.0.5 12/17/14
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 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),never
ouauto
. - --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 oHEAD
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
ebranch.<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 ogit status
e com ogit branch -v
. Além disso, ele direciona ogit 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
egit 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
ebranch.<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. Consultesubmodule.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
emerge
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 dogit for-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 oHEAD
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 See original version for this content. |
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
-a
entraria 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]