Qual dessas linhas está correta?
git checkout 'another_branch'
Ou
git checkout origin 'another_branch'
Ou
git checkout origin/'another_branch'
E qual é a diferença entre essas linhas?
git
github
version-control
gitlab
git-checkout
Benyamin Jafari
fonte
fonte
git checkout [branch]
para a maioria dos usuários que vêm a esta perguntaRespostas:
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 existeorigin/another_branch
, entãogit checkout another_branch
é equivalente agit checkout -b another_branch origin/another_branch; git branch -u origin/another_branch
. Isso é para criaranother_branch
a partirorigin/another_branch
e um conjuntoorigin/another_branch
como o montante doanother_branch
.Se nenhum deles existir,
git checkout another_branch
retorna erro.git checkout origin another_branch
retorna erro na maioria dos casos. Seorigin
é uma revisão eanother_branch
é um arquivo, ele verifica o arquivo dessa revisão, mas provavelmente não é o que você espera.origin
É usado principalmente emgit fetch
,git pull
egit push
como um controle remoto, um apelido para a URL para o repositório remoto.git checkout origin/another_branch
sucede seorigin/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 parafoo
:Se
foo
não existir eorigin/foo
existir, tente criar afoo
partirorigin/foo
e mude parafoo
:De maneira mais geral, se
foo
não existir, tente criar afoo
partir de uma referência ou confirmação conhecida e, em seguida, mude parafoo
: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 egithub
para o Github. Nesse caso, o repositório possuiorigin/foo
egithub/foo
.git switch foo
reclamaráfatal: invalid reference: foo
, porque não sabe de qual ref,origin/foo
ougithub/foo
, criarfoo
. Precisamos especificá-lo comgit switch -c foo origin/foo
ou degit 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:Se
foo
existir, tente recriar / forçar a criaçãofoo
de (ou redefinirfoo
para) uma referência ou confirmação conhecida e, em seguida, alterne parafoo
:que são equivalentes a:
Tente mudar para um HEAD desanexado de uma referência ou confirmação conhecida:
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:fonte
git checkout
comando faz muitas coisas, na minha opinião. É por isso que existem tantos modos de operação aqui. Se a única coisa quegit 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
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.
fonte
[
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'
]fonte
Com o Git 2.23 em diante, pode-se usar
git switch <branch name>
para alternar ramificações.fonte
O que funcionou para mim é o seguinte:
fonte
Comandos úteis para trabalhar na vida cotidiana:
fonte
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
fonte
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/*
fonte
depth
parâmetro) anteriormente e agora se pergunta por que não pode buscar outras ramificações remotaserror: 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
fonte