Como verificar um branch git remoto?

Alguém clicou em uma ramificação chamada test com git push origin test em um repositório comum. Eu vejo um ramo com git branch -r .

Agora estou tentando testar o teste de ramificação remota.

Eu tentei:

  • git checkout test que não faz nada

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

Como verificar um branch git remoto?

5758
23 нояб. definido por Juri Glass em 23 de novembro 2009-11-23 17:23 '09 às 17:23 2009-11-23 17:23
@ 26 respostas

Atualizar

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

 git fetch git checkout test 

Como o usuário masukomi observa no comentário, o git checkout test NÃO funcionará no git moderno se você tiver vários consoles. Neste caso, use

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

ou taquigrafia

 git checkout -t <name of remote>/test 

Resposta antiga

Antes de iniciar o trabalho local com um ramo remoto, você precisa obtê-lo, conforme indicado nas respostas abaixo.

Para obter uma filial, você só precisa:

 git fetch origin 

Isso lhe trará todos os ramos remotos. Você pode ver as filiais disponíveis para pedidos com:

 git branch -v -a 

Agora que você tem ramificações remotas, é necessário verificar o ramo em que está interessado, fornecendo uma cópia de trabalho local:

 git checkout -b test origin/test 
7947
23 нояб. A resposta é dada em hallski 23 de novembro 2009-11-23 17:26 '09 em 5:26 pm 2009-11-23 17:26

Sidenote: Com o moderno Git (> = 1.6.6 ) você só pode usar

 git checkout test 

(note que isso é 'teste' e não 'origem / teste') para executar o magic DWIM -mery e criar para você um 'teste' de ramificação local para o qual o upstream seria o rastreio remoto de "origem / teste".

border=0

A saída * (no branch) na git branch significa que você está em uma ramificação sem nome no chamado estado "HEAD desconectado" (HEAD refere-se diretamente à confirmação e não é um link simbólico para alguma ramificação local). Se você fez alguns commits neste branch anônimo, você sempre pode criar um branch local com o commit atual:

 git checkout -b test HEAD 
1147
24 нояб. Resposta dada por Jakub Narębski 24 de novembro 2009-11-24 03:17 '09 às 3:17 2009-11-24 03:17

Nesse caso, você provavelmente desejará criar uma ramificação de test local que rastreie 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ê bifurca uma ramificação remota.

508
23 нояб. a resposta é dada ndim 23 de novembro 2009-11-23 17:27 '09 às 17:27 2009-11-23 17:27

A resposta aceita não funciona para você?

Embora a primeira e a resposta selecionada estejam tecnicamente corretas, existe a possibilidade de você ainda não ter recebido todos os objetos e links do repositório remoto. Em caso afirmativo, você receberá o seguinte erro:

 $ git checkout -b remote_branch origin/remote_branch 

fatal: git checkout: os caminhos de atualização são incompatíveis com a troca de agências.
Você pretendia verificar "origin / remote_branch", que não pode ser resolvido como commit?

Solução

Se você receber esta mensagem, você deve primeiro fazer a git fetch origin , onde origin é o nome do repositório remoto antes de executar o git checkout remote_branch . Aqui está um exemplo completo com as 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, quando executamos o git fetch origin ramificações remotas extraídas, ainda não configuramos o rastreamento em nossa máquina local. A partir daí, como agora temos um link para uma ramificação remota, podemos simplesmente executar o git checkout remote_branch e obteremos as vantagens do rastreamento remoto.

421
07 дек. Resposta dada por Corey Ballou 07 dez 2012-12-07 23:52 '12 às 11:52 pm 2012-12-07 23:52

Eu tentei a solução acima, mas não funcionou. Experimente, funciona:

 git fetch origin 'remote_branch':'local_branch_name' 

Isso levará à ramificação remota e criará uma nova ramificação local (se ainda não existir) com o nome local_branch_name e rastreará a exclusão.

208
18 окт. resposta dada por Sahil kalra 18 out. 2013-10-18 08:55 '13 às 8:55 2013-10-18 08:55

Este será o DWIM para o nome remoto sem nome ( documentação ):

 $ git checkout -t remote_name/remote_branch 

Para adicionar um novo controle remoto, você precisa fazer o seguinte:

 $ git remote add remote_name location_of_remote $ git fetch remote_name 

O primeiro diz ao Git acesso remoto, o segundo recebe commits.

104
28 апр. respondeu tacaswell 28 abr 2012-04-28 01:37 '12 em 1:37 2012-04-28 01:37

Use:

 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 migrar primeiro se o ramo remoto for novo, mas eu não verifiquei este caso.

98
21 февр. A resposta é dada por matanster em 21 de fevereiro. 2016-02-21 13:58 '16 às 13:58 2016-02-21 13:58

Bem , a resposta é simples ... Você basicamente vê um ramo, mas você ainda não tem uma cópia local! ...

Você precisa fetch filial ...

Você pode simplesmente receber e, em seguida, fazer um pedido em uma ramificação usando o comando de uma linha abaixo para fazer isso:

 git fetch  git checkout test 

Também criei uma imagem abaixo para que você possa compartilhar suas diferenças, ver como a fetch funciona e como pull :

2019

05 сент. A resposta é dada Alireza 05 de setembro 2017-09-05 17:20 '17 às 17:20 2017-09-05 17:20

Para clonar o repositório Git, execute:

 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 verificar outras ramificações, siga estas etapas:

 git checkout -t origin/future_branch (for example) 

Esse comando verifica a ramificação remota e o nome da ramificação local é o mesmo da ramificação remota.

Se você quiser substituir o nome da filial local no checkout:

 git checkout -t -b enhancement origin/future_branch 

Agora, o nome da sua ramificação local é enhancement , mas o nome da sua ramificação remota é future_branch .

Documentação

48
21 янв. a resposta é dada Madhan Ayyasamy 21 Jan 2013-01-21 13:04 '13 às 13:04 2013-01-21 13:04

Você pode 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 
31
24 марта '14 в 16:11 2014-03-24 16:11 a resposta é dada uma 24 de março de '14 às 16:11 2014-03-24 16:11

Primeiro você precisa fazer:

git fetch # Se você não sabe o nome do ramo

 git fetch origin branch_name 

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

 git checkout -b branch_name origin/branch_name 

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

27
18 мая '17 в 16:55 2017-05-18 16:55 Resposta é dada por Mohideen ibn Mohammed em 18 de maio de '17 às 16:55 2017-05-18 16:55

Equipes

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

são iguais

  git fetch --all 

e depois

  git checkout -b fixes_for_dev origin/development 

Ambos criarão os latest fixes_for_dev do development

25
21 апр. a resposta é dada por sreekumar 21 abr 2016-04-21 22:10 '16 às 22:10 de 2016-04-21 22:10

Eu uso o seguinte comando:

 git checkout --track origin/other_remote_branch 
23
06 сент. a resposta é dada priyankvex 06 set . 2017-09-06 17:41 '17 às 17:41 2017-09-06 17:41

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

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

Isso verificará a next ramificação no servidor upstream remoto na ramificação local denominada second/next . Isso significa que, se você já tiver um branch local chamado next, ele não entrará em conflito.

 $ git branch -a * second/next remotes/origin/next remotes/upstream/next 
22
01 марта '13 в 13:00 2013-03-01 13:00 A resposta é dada por Kris em 01 de março de 2013 às 13:00 2013-03-01 13:00

git fetch git checkout your-branch-name

15
26 марта '14 в 10:00 2014-03-26 10:00 a resposta é dada a Inder Kumar Rathore em 26 de março de 14 às 10:00 2014-03-26 10:00

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

 git remote update 

E tente novamente para verificar o ramo remoto.

Isso funcionou para mim.

Acredito que o git fetch atrai todas as ramificações remotas, o que o autor original não quer.

15
06 июня '13 в 15:21 2013-06-06 15:21 a resposta é dada por webdevguy 06 junho '13 at 15:21 2013-06-06 15:21

Nenhuma dessas respostas funcionou para mim. funcionou:

git checkout -b feature/branch remotes/origin/feature/branch

14
10 июля '18 в 5:11 2018-07-10 05:11 Resposta é dada por brianyang em 10 de julho '18 às 5:11 am 2018-07-10 05:11

O comando git remote show <origin name> exibirá uma lista de todas as ramificações (incluindo ramificações não rastreadas). Então você pode encontrar o nome do ramo remoto que você deseja extrair.

Exemplo:

 $ git remote show origin 

Use estas etapas para extrair 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 
11
07 янв. A resposta é dada por Thushan 07 Jan 2018-01-07 16:12 18 às 16:12 2018-01-07 16:12

Outros garotos e garotas dão soluções, mas talvez eu possa lhe dizer por quê.

teste de verificação git que não faz nada

Does nothing é igual, doesn't work , então eu acho que quando você insere 'git checkout test' no seu terminal e pressiona a tecla Enter, a mensagem não aparece e não ocorre nenhum erro. Estou certo

Se a resposta for sim, posso dizer-lhe o motivo.

A razão é que na sua árvore existe um arquivo (ou pasta) chamado "teste".

Quando git checkout xxx descobriu,

  • git primeiro olha para xxx como o nome de uma ramificação, mas não existe uma ramificação chamada test.
  • Então Git pensa que xxx é o caminho, e felizmente (ou, infelizmente), existe um arquivo chamado test. Portanto, git checkout xxx significa cancelar qualquer modificação no arquivo xxx .
  • Se não houver nenhum arquivo com o nome xxx , o Git tentará criar xxx acordo com algumas regras. Uma regra é criar um branch com o nome xxx , se remotes/origin/xxx existir.
8
10 июля '17 в 10:45 2017-07-10 10:45 a resposta é dada oldman 10 de julho de '17 às 10:45 2017-07-10 10:45

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

Então funcionou para mim :

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

A explicação para isso é que notei que ao recuperar uma ramificação remota, ela foi selecionada em FETCH_HEAD:

 $ git fetch origin desired-branch From github.com:MYTEAM/my-repo * branch desired-branch -> FETCH_HEAD 
7
11 окт. responder alisa 11 out 2018-10-11 00:52 '18 às 0:52 2018-10-11 00:52

Apenas execute o git checkout com o nome do branch remoto. O Git criará automaticamente uma filial local que rastreie o controle remoto:

 git fetch git checkout test 

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

 git checkout --track origin/test 

ou

 git checkout -b test origin/test 

No 2.19, o Git examinou a configuração do checkout.defaultRemote , na qual, ao remover essa ambigüidade, o valor do controle remoto padrão é indicado.

6
13 сент. a resposta é dada por Eugene Yarmash 13 de setembro 2018-09-13 15:21 '18 às 15:21 2018-09-13 15:21

Para obter ramificações recém-criadas

 git fetch 

Mudar para outro ramo

 git checkout BranchName 
6
15 марта '18 в 11:49 2018-03-15 11:49 a resposta é dada por Hasib Kamal em 15 de março '18 às 11:49 2018-03-15 11:49

Você pode começar a rastrear todas as ramificações excluídas com o seguinte script bash:

 #!/bin/bash git fetch --all for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'` do git branch -f --track "$branch" "origin/$branch" done 

Aqui está também a versão de linha única:

 git fetch --all; for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'`; do git branch --track "$branch" "origin/$branch" ; done ; 
6
11 авг. A resposta é dada por OzzyCzech 11 ago. 2017-08-11 15:06 '17 às 15:06 2017-08-11 15:06

Por favor, siga este comando para criar uma pasta vazia. Digite-o e use o seguinte comando:

 saifurs-Mini:YO-iOS saifurrahman$ git clone your_project_url Cloning into 'iPhoneV1'... remote: Counting objects: 34230, done. remote: Compressing objects: 100% (24028/24028), done. remote: Total 34230 (delta 22212), reused 15340 (delta 9324) Receiving objects: 100% (34230/34230), 202.53 MiB | 294.00 KiB/s, done. Resolving deltas: 100% (22212/22212), done. Checking connectivity... done. saifurs-Mini:YO-iOS saifurrahman$ cd iPhoneV1/ saifurs-Mini:iPhoneV1 saifurrahman$ git checkout 1_4_0_content_discovery Branch 1_4_0_content_discovery set up to track remote branch 1_4_0_content_discovery from origin. Switched to a new branch '1_4_0_content_discovery' 
2
01 янв. a resposta é dada por Mehedi Hasan 01 de janeiro 2016-01-01 13:31 '16 às 13:31 2016-01-01 13:31

Obtenha a origem e verifique o ramo.

 git fetch origin  git checkout branch_name 
1
21 мая '18 в 14:33 2018-05-21 14:33 a resposta é dada Pranav 21 de maio de '18 às 14:33 2018-05-21 14:33

Se o nome da ramificação remota começar com caracteres especiais, você precisará usar aspas simples no comando checkout, caso contrário o git não saberá de qual ramificação você está falando.

Por exemplo, tentei extrair uma ramificação remota chamada #9773 mas o comando não funcionou corretamente, como mostra a figura abaixo:

2019

07 нояб. a resposta é dada Ulysses Alves 07 nov. 2018-11-07 14:17 '18 às 2:17 pm 2018-11-07 14:17

Outras questões sobre tags ou Ask a Question