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
- 2.44.1 → 2.45.2 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.)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 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>
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 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
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
(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]
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 usehack
as the local branch when branching off oforigin/hack
(orremotes/origin/hack
, or evenrefs/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 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]