Eu quero baixar o código-fonte do branch master-next usando git conforme descrito no wiki do Xilinx .

Eu tentei isso:

#git clone git://github.com/Xilinx/u-boot-xlnx/tree/master-next.git Initialized empty Git repository in /home/Hannan/master-next/.git/ fatal: remote error: Xilinx/u-boot-xlnx/tree/master-next is not a valid repository name Email [email protected] for help 

Mesmo isso falhou:

# git clone git://github.com/Xilinx/tree/master-next/u-boot-xlnx.git Initialized empty Git repository in /home/Hannan/u-boot-xlnx/.git/ fatal: remote error: Xilinx/tree/master-next/u-boot-xlnx is not a valid repository name Email [email protected] for help 

O comando que funciona é:

 git clone git://github.com/Xilinx/u-boot-xlnx.git 

Mas como posso saber se isso realmente buscará o branch master-next e não o ramo mestre ? Como faço para buscar corretamente um branch específico usando git?

Estou usando RHEL 6, acessado via PuTTY.

Resposta

Como diz a mensagem de erro, git clone espera um repositório git. Você pode “t” adicionar “o nome de um branch no caminho assim. Veja branches no git .

Você pode clonar um ramo único (e seu histórico): git clone <url> --branch <branch> --single-branch

Consulte git help clone.

Mas o comando clone que você executou forneceu uma cópia de todo o repositório, você pode ver os branches existentes com git branch e mais detalhes sobre eles com git show-branch.

Mude para o branch que você deseja com git checkout branch-name.

Os primeiros capítulos do O livro Pro Git (disponível online) fornece mais detalhes sobre os comandos básicos.

Comentários

  • " comando clone que você executou deu a você uma cópia de todo o repositório ". repositório inteiro significa que os dois ramos estão mesclados?
  • Não, eles estão não mesclado. Um branch no git não é uma cópia de todo o diretório, conforme explicado aqui .
  • O que fiz foi o seguinte: " git clone -b master-next github.com/Xilinx/u-boot-xlnx.git " isso não está correto?
  • Você não ' não precisava mais clonar. O comando que você mostrou em sua pergunta forneceu o repositório com todos os ramos. Mas isso também está correto. É ' equivalente a fazer git checkout master-next após a clonagem.

Resposta

Este comando deve funcionar:

$ git fetch origin [branch] 

O comando acima busca apenas metadados do repositório remoto, não mesclar fontes.

Se você deseja buscar e mesclar as fontes, o comando seria:

$ git pull origin [branch] 

Tenha cuidado com o ramo onde você está executando o comando merge. Será onde as fontes serão mescladas.

Comentários

  • Sua resposta está tecnicamente correta, mas acho que pode se beneficiar de alguma verificação / revisão gramatical escrevendo.
  • isso funciona muito bem, thx

Resposta

repositórios git contêm todos os ramos ( mas compactado e apenas diferenças, portanto, raramente um problema de tamanho).

Portanto, você pode clonar o projeto inteiro como fez com sucesso. Esta é uma maneira padrão de obter um repositório, mesmo se você estiver interessado apenas em um branch.

A estrutura .git então incluirá todos os branches feitos naquele repositório.

Para usar um branch específico, faça git checkout [branch_name] Se o branch existir, os arquivos serão disponibilizados localmente (apenas isso, os arquivos atuais nos diretórios do projeto).

git status irá então mostrar qual branch é o branch atual, por exemplo:

De acordo com Leiaz, pode-se clonar um branch específico. Na prática, nunca fiz isso ou vi outros usá-lo. Em pesquisas futuras, vejo que é relativamente novo, adicionado no git 1.7.10 (abril de 2012): opção “git clone aprendeu – single-branch” para limitar a clonagem para um único ramo (surpresa!); as tags que não apontam para o histórico do ramo não são buscadas. Por exemplo:

git clone -b master-next --single-branch git://github.com/Xilinx/ 

insira a descrição da imagem aqui Aqui, para meu aplicativo “vinculador”, estou verificando o branch v3.0.10

Comentários

  • Eu ' também nunca fiz isso, lembrei de ver a opção. Acho que ' s raramente usados como branches extras são " baratos " em tamanho.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *