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

NOME

git-switch - Alterna entre ramos

RESUMO

git switch [<opções>] [--no-guess] <ramo>
git switch [<opções>] --detach [<ponto-de-partida>]
git switch [<opções>] (-c|-C) <novo-ramo> [<ponto-de-partida>]
git switch [<opções>] --orphan <novo-ramo>

DESCRIÇÃO

Alterna para um ramo específico. A árvore de trabalho e o índice são atualizados para coincidir com o ramo. Todos os novos commits serão adicionadas ao cume deste ramo.

Opcionalmente, um novo ramo pode ser criado com -c, -C, automaticamente a partir de um ramo remoto com o mesmo nome (consulte --guess), ou desanexe a árvore de trabalho de qualquer outro ramo com a opção --detach, em conjunto com a alternância.

A alternância das ramificações não requer um índice limpo e uma árvore de trabalho (ou seja, não há diferenças em comparação com o HEAD). A operação é interrompida no entanto caso a operação leve à perda das alterações locais, a menos que seja dito o contrário com a opção --discard-changes ou --merge.

ESTE COMANDO É EXPERIMENTAL. O SEU COMPORTAMENTO PODE MUDAR.

OPÇÕES

<ramo>

O ramo para onde nos mudaremos.

<novo-ramo>

Nome para o novo branch.

<início-ponto>

O ponto de partida para criar o novo ramo. Definindo um <ponto-de-partida> permite criar um ramo com base em algum outro ponto na história que não seja o local onde o HEAD aponte atualmente. (Ou, no caso da opção --detach, permitir que você inspecione e desanexe de algum outro ponto.)

You can use the @{-N} syntax to refer to the N-th last branch/commit switched to using "git switch" or "git checkout" operation. You may also specify - which is synonymous to @{-1}. This is often used to switch quickly between two branches, or to undo a branch switch by mistake.

Como um caso especial, você pode usar A...B como um atalho para a mesclagem na base de A e` B` se houver exatamente uma base a ser mesclada. Você pode deixar de fora, no máximo, um de A e` B`, no caso, a predefinição retorna para HEAD.

-c <novo-ramo>
--create <novo-ramo>

Create a new branch named <new-branch> starting at <start-point> before switching to the branch. This is the transactional equivalent of

$ git branch <novo-ramo>
$ git switch <novo-ramo>

that is to say, the branch is not reset/created unless "git switch" is successful (e.g., when the branch is in use in another worktree, not just the current branch stays the same, but the branch is not reset to the start-point, either).

-C <novo-ramo>
--force-create <novo-ramo>

É similar a opção --create exceto quando <novo-ramo> já exista, ele será redefinido para o <ponto-de-partida>. Este é um atalho conveniente para:

$ git branch -f <novo-ramo>
$ git switch <novo-ramo>
-d
--detach

Alterne para um commit que será inspecionado e poderá ser feito experimentos descartáveis nele. Consulte a seção "HEAD DESANEXADO" no git-checkout[1] para mais detalhes.

--guess
--no-guess

Caso o <ramo> não seja encontrado mas exista uma ramificação de rastreamento exatamente em uma localidade remota (chame-o <remoto>) que coincida com um nome, trate como equivalente a

$ git switch -c <ramo> --track <remoto>/<ramo>

Caso o ramo exista em diversos ramos remotos e um deles seja nomeado pela variável de configuração checkout.defaultRemote, para propósitos de desambiguação, mesmo que <ramo> não seja o único em todos os outros ramos remotos. Defina por exemplo, checkout.defaultRemote=origin para que sempre verifique as ramificações remotas de lá caso <ramo> seja ambíguo e ainda assim origin exista. Consulte também checkout.defaultRemote em git-config[1].

--guess é o comportamento predefinido. Utilize a opção --no-guess para desativá-lo.

O comportamento predefinido pode ser definido através da variável de configuração checkout.guess.

-f
--force

Um atalho para --discard-changes.

--discard-changes

Prossiga mesmo que o índice ou a árvore de trabalho seja diferente do HEAD. Ambos o índice e a árvore de trabalho são restauradas para coincidir com a alternância do destino. Caso a opção --recurse-submodules seja utilizada, o conteúdo do submódulo também será restaurado para coincidir a alternância do destino. Isso é utilizado para descartar as alterações locais.

-m
--merge

If you have local modifications to one or more files that are different between the current branch and the branch to which you are switching, the command refuses to switch branches in order to preserve your modifications in context. However, with this option, a three-way merge between the current branch, your working tree contents, and the new branch is done, and you will be on the new branch.

Quando ocorre um conflito durante a mesclagem, as entradas do índice para os caminhos conflitantes não são mesclados, sendo necessário que você resolva os conflitos e marque os caminhos resolvidos com git add (ou git rm caso a mesclagem resulte na exclusão do caminho) .

--conflict=<estilo>

O mesmo que a opção --merge acima, porém altera a maneira como os blocos conflitantes são apresentados, ao substituir a variável de configuração merge.conflictStyle. Os valores possíveis são merge (predefinido), "diff3" e "zdiff3".

-q
--quiet

Silencioso, suprima as mensagens de feedback.

--progress
--no-progress

A condição do progresso é relatado no fluxo de erro predefinido ao estar conectado num terminal, a menos que as opções --quiet seja utilizados. Esta opção ativa os relatórios de progresso, mesmo que não estejam anexados a um terminal, independentemente da opção --quiet.

-t
--track [direct|inherit]

When creating a new branch, set up "upstream" configuration. -c is implied. See --track in git-branch[1] for details.

If no -c option is given, the name of the new branch will be derived from the remote-tracking branch, by looking at the local part of the refspec configured for the corresponding remote, and then stripping the initial part up to the "*". This would tell us to use hack as the local branch when branching off of origin/hack (or remotes/origin/hack, or even refs/remotes/origin/hack). If the given name has no slash, or the above guessing results in an empty name, the guessing is aborted. You can explicitly give a name with -c in such a case.

--no-track

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

--orphan <novo-ramo>

Create a new unborn branch, named <new-branch>. All tracked files are removed.

--ignore-other-worktrees

O comando git switch se recusa quando a "ref" desejada já está foi averiguada por uma outra árvore de trabalho. Esta opção faz com que ele averigue a "ref" mesmo assim. Em outras palavras, a "ref" pode ser mantida por mais de uma árvore de trabalho.

--recurse-submodules
--no-recurse-submodules

O uso da opção --recurse-submodules atualizará o conteúdo de todos os submódulos ativos de acordo com commit gravado no superprojeto. Caso nada (ou a opção --no-recurse-submodules) seja utilizado, os submódulos que trabalham nas árvores não serão atualizados. Assim como git-submodule[1], isso faz com que HEAD seja desanexando dos submódulos.

EXEMPLOS

O comando a seguir alterna para o ramo principal "master":

$ git switch master

Depois de trabalhar no ramo errado, mudar para o ramo correto seria feito utilizando:

$ git switch mytopic

No entanto, o seu ramo "errado" e o correto "mytopic" podem diferir nos arquivos modificados localmente por você. A mudança entre os ramos acima falhará assim:

$ git switch mytopic
erro: você tem alterações locais em 'frotz'; não mudar de ramo.

Você pode repassar a opção`-m` ao comando, que tentaria uma mesclagem de três vias:

$ git switch -m mytopic
Auto-merging frotz

Após esta mesclagem de três vias, as alterações locais não serão registradas no seu arquivo do índice, portanto, o git diff exibirá quais foram as alterações feitas desde o cume do novo ramo.

Para voltar à ramificação anterior antes de mudarmos para "mytopic" (ou seja, para a ramificação "master"):

$ git switch -

Você pode aumentar um novo ramo a partir de qualquer commit. Por exemplo, mude para "HEAD~3" e crie o ramo "fixup":

$ git switch -c fixup HEAD~3
Foi alternado para um novo ramo 'fixup'

Caso queira criar uma nova ramificação a partir do ramo remoto de mesmo nome:

$ git switch new-topic
O ramo 'new-topic' foi configurada para monitorar o ramo remoto 'new-topic' da 'origin'
Foi alternado para um novo ramo 'new-topic'

Para averiguar o commit HEAD~3 por inspeções temporárias ou experimentos sem criar um novo ramo:

$ git switch --detach HEAD~3
HEAD is now at 9fc9555312 Merge branch 'cc/shared-index-permbits'

Se acontecer de valer a pena manter o que você fez, é possível criar um novo nome para ele (sem precisar alternar):

$ git switch -c good-surprises

CONFIGURAÇÃO

Warning

Missing pt_BR/includes/cmd-config-section-all.txt

See original version for this content.

Warning

Missing pt_BR/config/checkout.txt

See original version for this content.

GIT

Parte do conjunto git[1]

scroll-to-top