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_branchjá existir localmente e você não estiver nesse ramo, git checkout another_branchalterne para o ramo.
Se another_branchnã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_brancha partir origin/another_branche um conjunto origin/another_branchcomo o montante do another_branch.
Se nenhum deles existir, git checkout another_branchretorna erro.
git checkout origin another_branchretorna 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 pulle git pushcomo um controle remoto, um apelido para a URL para o repositório remoto.
git checkout origin/another_branchsucede se origin/another_branchexistir. 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 switchpara criar e alternar ramificações.
Se fooexistir, tente mudar para foo:
git switch foo
Se foonão existir e origin/fooexistir, tente criar a foopartir origin/fooe mude para foo:
git switch -c foo origin/foo
# or simply
git switch foo
De maneira mais geral, se foonão existir, tente criar a foopartir 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, originpara o Gitlab e githubpara o Github. Nesse caso, o repositório possui origin/fooe github/foo. git switch fooreclamará fatal: invalid reference: foo, porque não sabe de qual ref, origin/fooou github/foo, criar foo. Precisamos especificá-lo com git switch -c foo origin/fooou de git switch -c foo github/fooacordo 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 fooexistir, tente recriar / forçar a criação foode (ou redefinir foopara) 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 checkoutcomando faz muitas coisas, na minha opinião. É por isso que existem tantos modos de operação aqui. Se a única coisa que git checkoutfizesse 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 switchpara alternar para um ramo.
git checkoutpara 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 --listgit config --unset remote.origin.fetch git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*depthparâ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 gitusando 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