uteis - verificar tags git




Como faço para verificar uma ramificação remota do Git? (18)

Alguém empurrou um branch chamado test com git push origin test para um repositório compartilhado. Eu posso ver o ramo com git branch -r .

Agora estou tentando verificar o ramo de test remoto.

Eu tentei:

  • git checkout test que não faz nada

  • git checkout origin/test* (no branch) . O que é confuso. Como posso estar em "nenhum ramo"?

Como faço para verificar uma ramificação remota do Git?


Atualizar

A resposta de Jakub realmente melhora isso. Com as versões do Git ≥ 1.6.6, com apenas um controle remoto, você pode apenas fazer:

git fetch
git checkout test

Como o usuário masukomi aponta em um comentário, o git checkout test NÃO funcionará no git moderno se você tiver vários controles remotos. Neste caso, use

git checkout -b test <name of remote>/test

Resposta antiga

Antes que você possa começar a trabalhar localmente em uma ramificação remota, você precisa buscá-la conforme solicitado nas respostas abaixo.

Para buscar um ramo, você simplesmente precisa:

git fetch origin

Isso irá buscar todos os ramos remotos para você. Você pode ver as filiais disponíveis para finalizar a compra com:

git branch -v -a

Com as filiais remotas em mãos, agora você precisa verificar o ramo em que está interessado, fornecendo uma cópia de trabalho local:

git checkout -b test origin/test

Resposta aceita não está funcionando para você?

Embora a primeira e a resposta selecionada estejam tecnicamente corretas , existe a possibilidade de você ainda não ter recuperado todos os objetos e referências do repositório remoto. Se for esse o caso, você receberá o seguinte erro:

$ git checkout -b remote_branch origin/remote_branch

fatal: git checkout: a atualização de caminhos é incompatível com a troca de agências.
Você pretendia fazer o checkout 'origin / remote_branch', que não pode ser resolvido como commit?

Solução

Se você receber essa mensagem, primeiro faça uma git fetch origin que origin é o nome do repositório remoto antes de executar o git checkout remote_branch . Aqui está um exemplo completo com respostas:

$ git fetch origin
remote: Counting objects: 140, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 69 (delta 36), reused 66 (delta 33)
Unpacking objects: 100% (69/69), done.
From https://github.com/githubuser/repo-name
   e6ef1e0..5029161  develop    -> origin/develop
 * [new branch]      demo       -> origin/demo
   d80f8d7..359eab0  master     -> origin/master

$ git checkout demo
Branch demo set up to track remote branch demo from origin.
Switched to a new branch 'demo'

Como você pode ver, a execução do git fetch origin recuperou todas as ramificações remotas que ainda não foram configuradas para rastrear em nossa máquina local. A partir daí, como agora temos uma ref no ramo remoto, podemos simplesmente executar o git checkout remote_branch e obteremos os benefícios do rastreamento remoto.


Comandos

git fetch --all
git checkout -b <ur_new_local_branch_name> origin/<Remote_Branch_Name>

são iguais a

 git fetch --all

e depois

 git checkout -b fixes_for_dev origin/development

Ambos criarão as latest fixes_for_dev do development


Eu estava preso em uma situação vendo error: pathspec 'desired-branch' did not match any file(s) known to git. para todas as sugestões acima. Estou no git versão 1.8.3.1.

Então isso funcionou para mim :

git fetch origin && git checkout branch_name 

A explicação por trás disso é que notei que ao buscar a ramificação remota, ela foi buscada para FETCH_HEAD:

git fetch origin desired-branch
git checkout -b desired-branch FETCH_HEAD

Eu uso o seguinte comando:

git checkout --track origin/other_remote_branch

Isto irá DWIM para um remoto não nomeado origem ( documentation ):

$ git checkout -t remote_name/remote_branch

Para adicionar um novo controle remoto, você precisará fazer o seguinte primeiro:

$ git remote add remote_name location_of_remote
$ git fetch remote_name

O primeiro diz ao Git que o remoto existe, o segundo recebe os commits.


Nesse caso, você provavelmente deseja criar uma ramificação de test local que esteja rastreando a ramificação do test remoto:

$ git branch test origin/test

Nas versões anteriores do git , você precisava de uma opção explícita --track , mas esse é o padrão agora quando você está se ramificando de uma ramificação remota.


O comando git remote show <origin name> listará todas as ramificações (incluindo ramificações não rastreadas). Então você pode encontrar o nome da ramificação remota que você precisa buscar.

Exemplo:

$ git remote show origin

Use estas etapas para buscar ramificações remotas:

git fetch <origin name> <remote branch name>:<local branch name>
git checkout <local branch name > (local branch name should the name that you given fetching)

Exemplo:

$ git fetch origin test:test
$ git checkout test

Para clonar um repositório Git, faça:

git clone <either ssh url /http url>

O comando acima verifica todas as ramificações, mas somente a ramificação master será inicializada. Se você quiser fazer o checkout dos outros ramos, faça:

git checkout -t origin/future_branch (for example)

Esse comando faz check-out da ramificação remota e o nome da sua ramificação local será o mesmo da ramificação remota.

Se você quiser substituir o nome da sua filial local no check-out:

git checkout -t -b enhancement origin/future_branch

Agora, seu nome de ramificação local é enhancement , mas seu nome de ramificação remota é future_branch .

Documentation


Podes tentar

git fetch remote
git checkout --track -b local_branch_name origin/branch_name

ou

git fetch
git checkout -b local_branch_name origin/branch_name

Primeiro você precisa fazer:

git fetch # Se você não sabe sobre o nome da filial

git fetch origin branch_name

Em segundo lugar, você pode verificar o ramo remoto em seu local por:

git checkout -b branch_name origin/branch_name

-b criará uma nova ramificação no nome especificado a partir da ramificação remota selecionada.


Se a ramificação estiver em algo diferente do remoto de origin , gosto de fazer o seguinte:

$ git fetch
$ git checkout -b second/next upstream/next

Isso fará o checkout da next ramificação no remoto upstream em um branch local chamado second/next . O que significa que se você já tem um ramo local chamado next, não entrará em conflito.

$ git branch -a
* second/next
  remotes/origin/next
  remotes/upstream/next

Simplesmente execute git checkout com o nome do branch remoto. O Git irá criar automaticamente um ramo local que rastreia o remoto:

git fetch
git checkout test

No entanto, se esse nome de ramificação for encontrado em mais de um controle remoto, isso não funcionará, pois o Git não sabe qual usar. Nesse caso, você pode usar:

git checkout --track origin/test

ou

git checkout -b test origin/test

No 2.19 , o Git aprendeu a configuração checkout.defaultRemote , que especifica um controle remoto para o padrão ao resolver tal ambigüidade.


Usar:

git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME>

Outras respostas não funcionam com o moderno Git no meu caso benigno. Você pode precisar puxar primeiro se o ramo remoto é novo, mas eu não verifiquei esse caso.


git branch -r diz que o nome do objeto é inválido, porque esse nome de ramificação não está na lista de ramificação local do Git. Atualize sua lista de ramificações locais de origem com:

git remote update

E tente verificar sua ramificação remota novamente.

Isso funcionou para mim.

Acredito que o git fetch puxa em todos os ramos remotos, o que não é o que o pôster original queria.


git fetch && git checkout your-branch-name


OK , a resposta é fácil ... Você basicamente vê o ramo, mas ainda não tem uma cópia local! ...

Você precisa fetch o ramo ...

Você pode simplesmente buscar e, em seguida, fazer checkout para o ramo, use o comando de uma linha abaixo para fazer isso:

git fetch && git checkout test

Eu também criei a imagem abaixo para você compartilhar as diferenças, ver como a fetch funciona e também como é diferente de pull :


Para obter ramificações recém-criadas

git fetch

Para mudar para outro ramo

git checkout BranchName




remote-branch