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
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/
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.
git checkout master-next
após a clonagem.