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.43.0 11/20/23
- 2.42.0 → 2.42.1 no changes
- 2.41.0 06/01/23
- 2.40.1 no changes
- 2.40.0 03/12/23
- 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
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çãocore.logAllRefUpdates
. A forma negada o comando--no-create-reflog
substitui apenas um--create-reflog
anterior, mas atualmente não nega a configuração docore.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 comandogit 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 oHEAD
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
ebranch.<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 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.Este é o comportamento predefinido quando o ponto inicial for uma ramificação rastreada remotamente. Defina a variável de configuração
branch.autoSetupMerge
comofalse
caso queira que ogit switch
,git checkout
e ogit branch
sempre se comportem como se a opção--no-track
fosse utilizada. Defina-o comoalways
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
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
, é 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 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 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
-
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)
-
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].
-
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
.
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]