Buscar uma ramificação específica usando git

16

Eu quero fazer o download do código-fonte da ramificação master-next usando git as descrito no Wiki da 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 eu sei que isso realmente buscará a ramificação master-next e não o ramo mestre ? Como faço para buscar corretamente uma ramificação específica usando o git?

Estou usando o RHEL 6, acessado via PuTTY.

    
por user2799508 29.04.2014 / 12:24

3 respostas

14

Como a mensagem de erro informa, git clone espera um repositório git. Você não pode "adicionar" o nome de uma ramificação no caminho dessa maneira. Veja filiais no git .

Você pode clonar uma única ramificação (e sua história): git clone <url> --branch <branch> --single-branch

Veja git help clone .

Mas o comando clone que você executou forneceu uma cópia de todo o repositório, você pode ver as ramificações existentes com git branch e mais detalhes sobre elas com git show-branch .

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

Os primeiros capítulos do livro Pro Git (disponível on-line) fornecem mais detalhes sobre os comandos básicos.

    
por 29.04.2014 / 13:08
9

Este comando deve funcionar:

$ git fetch origin [branch]

O comando acima só busca metadados do repositório remoto, mas não mescla fontes.

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

$ git pull origin [branch]

Tenha cuidado com a ramificação em que você está executando o comando de mesclagem. Será onde as fontes serão mescladas.

    
por 29.04.2014 / 12:57
4

repositórios git contêm todas as ramificações (mas compactadas e apenas diferenças, portanto, raramente um problema de tamanho).

Portanto, você pode clonar o projeto inteiro como você fez com sucesso. Esta é uma maneira padrão de obter um repositório, mesmo que você tenha interesse em apenas um ramo.

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

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

git status mostrará qual ramificação é a ramificação atual, por exemplo:

De acordo com Leiaz, é possível clonar um ramo específico. Na prática, nunca fiz isso ou vi outros usarem. Em pesquisas posteriores, vejo que é relativamente novo, adicionado no git 1.7.10 (abril de 2012): a opção 'git clone learnt --single-branch' para limitar a clonagem a um único ramo (surpresa!); tags que não apontam para o histórico da ramificação não são buscadas. Por exemplo:

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

Aqui,parameuaplicativo"linker", estou verificando o ramo v3.0.10

    
por 29.04.2014 / 13:26

Tags