Buscar uma ramificação específica usando git

19

Quero baixar o código-fonte da ramificação master-next usando o 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 eu sei que isso realmente buscará o ramo mestre-próximo e não o ramo mestre ? Como faço para buscar corretamente um ramo específico usando o git?

Estou usando o RHEL 6, acessado via PuTTY.

user2799508
fonte

Respostas:

16

Como a mensagem de erro informa, git cloneespera um repositório git. Você não pode "adicionar" o nome de uma ramificação no caminho assim. Veja galhos no git .

Você pode clonar um único ramo (e é histórico): 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 git branche mais detalhes sobre elas git show-branch.

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

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

Leiaz
fonte
"o comando clone que você executou deu uma cópia de todo o repositório". repositório inteiro significa que ambos os ramos foram mesclados?
usar o seguinte comando
Não, eles não são mesclados. Uma ramificação no git não é uma cópia de todo o diretório, conforme explicado aqui .
Leiaz
O que fiz foi o seguinte: "git clone -b master-next github.com/Xilinx/u-boot-xlnx.git " não está correto?
usar o seguinte comando
Você não precisava mais do clone. O comando que você mostrou na sua pergunta deu a você o repositório com todos os ramos. Mas isso também está correto. É equivalente a fazer git checkout master-nextapós a clonagem.
Leiaz
13

Este comando deve funcionar:

$ git fetch origin [branch]

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

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

$ git pull origin [branch]

Cuidado com o ramo em que você está executando o comando mesclar. É onde as fontes são mescladas.

raulsaeztapia
fonte
Sua resposta é tecnicamente correta, mas acho que ela pode se beneficiar de algumas verificações / reescrições gramaticais.
Sami Laine
isso funciona muito bem thx
nwgat
4

Os repositórios git contêm todas as ramificações (mas as diferenças compactadas e únicas raramente são um problema de tamanho).

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

A estrutura .git incluirá todas as ramificações feitas nesse 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 (como exatamente isso, os arquivos atuais nos diretórios do projeto).

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

Segundo Leiaz, é possível clonar um ramo específico. Na prática, eu nunca fiz isso ou vi outros usá-lo. Em pesquisas adicionais, vejo que é relativamente novo, adicionado no git 1.7.10 (abril de 2012): opção 'git clone learned - 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/

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

Michael Durrant
fonte
11
Também nunca fiz isso, lembrei-me de ter visto a opção. Eu acho que raramente é usado, pois ramos extras são "baratos" em tamanho.
Leiaz