Qual dessas linhas está correta?
git checkout 'another_branch'
Ou
git checkout origin 'another_branch'
Ou
git checkout origin/'another_branch'
git checkout 'another_branch'
Ou
git checkout origin 'another_branch'
Ou
git checkout origin/'another_branch'
Respostas:
Se another_branch
já existir localmente e você não estiver nesse ramo, git checkout another_branch
alterne para o ramo.
Se another_branch
não existe, mas existe origin/another_branch
, então git checkout another_branch
é equivalente a git checkout -b another_branch origin/another_branch; git branch -u origin/another_branch
. Isso é para criar another_branch
a partir origin/another_branch
e um conjunto origin/another_branch
como o montante do another_branch
.
Se nenhum deles existir, git checkout another_branch
retorna erro.
git checkout origin another_branch
retorna erro na maioria dos casos. Se origin
é uma revisão e another_branch
é um arquivo, ele verifica o arquivo dessa revisão, mas provavelmente não é o que você espera. origin
É usado principalmente em git fetch
, git pull
e git push
como um controle remoto, um apelido para a URL para o repositório remoto.
git checkout origin/another_branch
sucede se origin/another_branch
existir. Isso leva a estar no estado HEAD desanexado, não em nenhuma ramificação. Se você fizer novas confirmações, as novas confirmações não poderão ser acessadas por nenhuma ramificação existente e nenhuma delas será atualizada.
ATUALIZAÇÃO :
Como a 2.23.0 foi lançada, também podemos usar git switch
para criar e alternar ramificações.
Se foo
existir, tente mudar para foo
:
git switch foo
Se foo
não existir e origin/foo
existir, tente criar a foo
partir origin/foo
e mude para foo
:
git switch -c foo origin/foo
# or simply
git switch foo
De maneira mais geral, se foo
não existir, tente criar a foo
partir de uma referência ou confirmação conhecida e, em seguida, mude para foo
:
git switch -c foo <ref>
git switch -c foo <commit>
Se mantivermos um repositório no Gitlab e no Github ao mesmo tempo, o repositório local poderá ter dois controles remotos, por exemplo, origin
para o Gitlab e github
para o Github. Nesse caso, o repositório possui origin/foo
e github/foo
. git switch foo
reclamará fatal: invalid reference: foo
, porque não sabe de qual ref, origin/foo
ou github/foo
, criar foo
. Precisamos especificá-lo com git switch -c foo origin/foo
ou de git switch -c foo github/foo
acordo com a necessidade. Se queremos criar ramificações a partir de ambas as ramificações remotas, é melhor usar nomes distintos para as novas ramificações:
git switch -c gitlab_foo origin/foo
git switch -c github_foo github/foo
Se foo
existir, tente recriar / forçar a criação foo
de (ou redefinir foo
para) uma referência ou confirmação conhecida e, em seguida, alterne para foo
:
git switch -C foo <ref>
git switch -C foo <commit>
que são equivalentes a:
git switch foo
git reset [<ref>|<commit>] --hard
Tente mudar para um HEAD desanexado de uma referência ou confirmação conhecida:
git switch -d <ref>
git switch -d <commit>
Se você deseja apenas criar um ramo, mas não mudar para ele, use-o git branch
. Tente criar uma ramificação a partir de uma referência ou confirmação conhecida:
git branch foo <ref>
git branch foo <commit>
git checkout
comando faz muitas coisas, na minha opinião. É por isso que existem tantos modos de operação aqui. Se a única coisa que git checkout
fizesse foi alternar ramificações, a resposta seria simples, mas também pode criar ramificações e até extrair arquivos de confirmações específicas sem alternar ramificações.
git switch
para alternar para um ramo.
git checkout
para versões antigas, que também funcionam em versões modernas.
Mudando para outro ramo no git. Resposta direta,
git-checkout - Alterna ramificações ou restaura arquivos da árvore de trabalho
git fetch origin <----this will fetch the branch
git checkout branch_name <--- Switching the branch
Antes de alternar a ramificação, verifique se você não possui arquivos modificados; nesse caso, você pode confirmar as alterações ou ocultá-las.
[ git checkout "branch_name"
]
é outra maneira de dizer:
[ git checkout -b branch_name origin/branch_name
]
caso "branch_name" exista apenas remotamente.
[ git checkout -b branch_name origin/branch_name
] é útil caso você tenha vários controles remotos.
Em relação a [ git checkout origin 'another_branch'
] não tenho certeza de que isso seja possível, o AFAK pode ser feito usando o comando "buscar" - [ git fetch origin 'another_branch'
]
Com o Git 2.23 em diante, pode-se usar git switch <branch name>
para alternar ramificações.
O que funcionou para mim é o seguinte:
Alterne para o ramo necessário:
git checkout -b BranchName
E então eu puxei o "mestre" por:
git pull origin master
Comandos úteis para trabalhar na vida cotidiana:
git checkout -b "branchname" -> creates new branch
git branch -> lists all branches
git checkout "branchname" -> switches to your branch
git push origin "branchname" -> Pushes to your branch
git add */filename -> Stages *(All files) or by given file name
git commit -m "commit message" -> Commits staged files
git push -> Pushes to your current branch
Se você deseja que a ramificação rastreie a ramificação remota, o que é muito importante se você confirmar alterações na ramificação e extrair alterações, etc., você precisará usar add a -t para o checkout real, por exemplo:
git checkout -t branchname
Verifica : git branch -a
Se você estiver recebendo apenas um ramo. Em seguida, siga as etapas abaixo.
git config --list
git config --unset remote.origin.fetch
git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
depth
parâmetro) anteriormente e agora se pergunta por que não pode buscar outras ramificações remotas error: pathspec 'another_branch' did not match any file(s) known to git
usando os comandos sugeridos acima. Certamente não é sobre o que era a pergunta original, mas pode ajudar outras pessoas a coçar a cabeça aqui.
Eu estou usando isso para alternar um ramo para outro, qualquer pessoa que você pode usá-lo funciona para mim como charme.
git switch [branchName] OU git checkout [branchName]
ex: git switch develop OU
git checkout develop
git checkout [branch]
para a maioria dos usuários que vêm a esta pergunta