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

If --list is given, or if there are no non-option arguments, existing branches are listed; the current branch will be highlighted in green and marked with an asterisk. Any branches checked out in linked worktrees will be highlighted in cyan and marked with a plus sign. Option -r causes the remote-tracking branches to be listed, and option -a shows both local and remote branches.

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.

With --contains, shows only the branches that contain the named commit (in other words, the branches whose tip commits are descendants of the named commit), --no-contains inverts it. With --merged, only branches merged into the named commit (i.e. the branches whose tip commits are reachable from the named commit) will be listed. With --no-merged only branches not merged into the named commit will be listed. If the <commit> argument is missing it defaults to HEAD (i.e. the tip of the current branch).

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.

With a -m or -M option, <oldbranch> will be renamed to <newbranch>. If <oldbranch> had a corresponding reflog, it is renamed to match <newbranch>, and a reflog entry is created to remember the branch renaming. If <newbranch> exists, -M must be used to force the rename to happen.

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 .

With a -d or -D option, <branchname> will be deleted. You may specify more than one branch for deletion. If the branch currently has a reflog then the reflog will also be deleted.

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

Create the branch’s reflog. This activates recording of all changes made to the branch ref, enabling use of date based sha1 expressions such as "<branchname>@{yesterday}". Note that in non-bare repositories, reflogs are usually enabled by default by the core.logAllRefUpdates config option. The negated form --no-create-reflog only overrides an earlier --create-reflog, but currently does not negate the setting of core.logAllRefUpdates.

-f
--force

Reset <branchname> to <start-point>, even if <branchname> exists already. Without -f, git branch refuses to change an existing branch. In combination with -d (or --delete), allow deleting the branch irrespective of its merged status, or whether it even points to a valid commit. In combination with -m (or --move), allow renaming the branch even if the new branch name already exists, the same applies for -c (or --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>]

Color branches to highlight current, local, and remote-tracking branches. The value must be always (the default), never, or auto.

--no-color

Turn off branch colors, even when the configuration file gives the default to color output. Same as --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

List or delete (if used with -d) the remote-tracking branches. Combine with --list to match the optional pattern(s).

-a
--all

List both remote-tracking branches and local branches. Combine with --list to match optional pattern(s).

-l
--list

List branches. With optional <pattern>..., e.g. git branch --list 'maint-*', list only the branches that match the pattern(s).

--show-current

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

-v
-vv
--verbose

When in list mode, show sha1 and commit subject line for each head, along with relationship to upstream branch (if any). If given twice, print the path of the linked worktree (if any) and the name of the upstream branch, as well (see also git remote show <remote>). Note that the current worktree’s HEAD will not have its path printed (it will always be your current directory).

-q
--quiet

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

--abbrev=<n>

In the verbose listing that show the commit object name, show the shortest prefix that is at least <n> hexdigits long that uniquely refers the object. The default value is 7 and can be overridden by the core.abbrev config option.

--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:

The default option, true, behaves as though --track=direct were given whenever the start-point is a remote-tracking branch. false behaves as if --no-track were given. always behaves as though --track=direct were given. inherit behaves as though --track=inherit were given. simple behaves as though --track=direct were given only when the start-point is a remote-tracking branch and the new branch has the same name as the remote branch.

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

As this option had confusing syntax, it is no longer supported. Please use --track or --set-upstream-to instead.

-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>

The name of the branch to create or delete. The new branch name must pass all checks defined by git-check-ref-format[1]. Some of these checks may restrict the characters allowed in a branch name.

<início-ponto>

The new branch head will point to this commit. It may be given as a branch name, a commit-id, or a tag. If this option is omitted, the current HEAD will be used instead.

<ramo-antigo>

The name of an existing branch. If this option is omitted, the name of the current branch will be used instead.

<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>

A string that interpolates %(fieldname) from a branch ref being shown and the object it points at. The format is the same as that of git-for-each-ref[1].

CONFIGURAÇÃO

pager.branch is only respected when listing branches, i.e., when --list is used or implied. The default is to use a pager. See 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. Delete the remote-tracking branches "todo", "html" and "man". The next fetch or pull will create them again unless you configure them not to. See 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