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.0 no changes
- 2.44.0 02/23/24
- 2.43.2 → 2.43.5 no changes
- 2.43.1 02/09/24
- 2.43.0 11/20/23
- 2.38.1 → 2.42.3 no changes
- 2.38.0 10/02/22
- 2.35.1 → 2.37.7 no changes
- 2.35.0 01/24/22
- 2.30.1 → 2.34.8 no changes
- 2.30.0 12/27/20
- 2.27.1 → 2.29.3 no changes
- 2.27.0 06/01/20
- 2.23.1 → 2.26.3 no changes
- 2.23.0 08/16/19
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 oHEAD
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 últimoramo/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 deA
e` B` se houver exatamente uma base a ser mesclada. Você pode deixar de fora, no máximo, um deA
e` B`, no caso, a predefinição retorna paraHEAD
. - -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 assimorigin
exista. Consulte tambémcheckout.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
(ougit 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çãomerge.conflictStyle
. Os valores possíveis sãomerge
(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 usarhack
como a ramificação local ao ramificar a partir deorigin/hack
(ouremotes/origin/hack
, ou mesmorefs/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 queHEAD
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 See original version for this content. |
Warning
|
Missing See original version for this content. |
GIT
Parte do conjunto git[1]