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

Você pode usar a sintaxe @{-N} para se referir ao N-ésimo último ramo/commit alterado usando a operação git switch ou git checkout. Você também pode especificar -, que é sinônimo de @{-1}. Isso geralmente é usado para alternar rapidamente entre as duas ramificações ou para desfazer uma alteração feita por engano na ramificação.

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>

Crie uma nova ramificação chamada <novo-ramo> começando em <ponto-de-partida> antes de mudar para a ramificação. Este é o equivalente transacional de

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

Ou seja, o ramo não é redefinido/criado a menos que o comando git switch seja bem-sucedido (quando o ramo está em uso em outra árvore de trabalho, não apenas o ramo atual permanece o mesmo, mas o ramo também não é redefinido para o ponto inicial por exemplo).

-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

Caso tenha modificações locais num ou mais arquivos que sejam diferentes entre o ramo atual e o ramo para onde você esteja alternando, o comando se recusará a alternar os ramos para preservar as suas alterações no contexto. No entanto, com essa opção, é feita uma mesclagem de três vias entre o ramo atual, o conteúdo da sua árvore de trabalho e o novo ramo, e você estará no novo ramo.

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]

Ao criar uma nova ramificação, defina a configuração upstream. A opção -c fica implícita. Para mais detalhes consulte --track do comando git-branch[1].

Se nenhuma opção -c for usada, o nome do novo ramo será derivado do ramo de rastreamento remoto, observando a parte local do refspec configurado para o remoto correspondente e, em seguida, removendo a parte inicial até o "*". Isso nos diria para usar hack como a ramificação local ao ramificar a partir de origin/hack (ou remotes/origin/hack, ou mesmo refs/remotes/origin/hack). Se o nome informado não tiver barra, ou se a adivinhação acima resultar num nome vazio, a adivinhação será abortada. Nesse caso, você pode fornecer explicitamente um nome com a opção -c.

--no-track

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

--orphan <novo-ramo>

Crie uma nova ramificação nova em folha, denominada <novo-ramo>. Todos os arquivos rastreados são removidos.

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