Eu tenho um repositório Git local chamado 'esqueleto' que eu uso para armazenar esqueletos de projetos. Possui alguns ramos, para diferentes tipos de projetos:
casey@agave [~/Projects/skeleton] git branch
* master
rails
c
c++
Se eu quiser verificar a ramificação principal de um novo projeto, eu posso fazer
casey@agave [~/Projects] git clone skeleton new
Initialized empty Git repository in /Users/casey/Projects/new/.git/
e tudo é como eu quero. Especificamente, o novo ramo mestre aponta para o ramo mestre do esqueleto, e eu posso pressionar e puxar para mover as alterações na configuração básica do projeto.
O que não funciona, no entanto, é se eu quero clonar outro ramo. Não consigo obtê-lo, de modo que apenas puxo a ramificação que desejo, por exemplo, a rails
ramificação e, em seguida, o novo repositório possui uma master
ramificação que envia e extrai da rails
ramificação do repositório esqueleto , por padrão.
Existe uma boa maneira de fazer isso? Ou talvez não seja dessa maneira que o Git queira que eu estruture as coisas, e certamente estou aberto a isso. Talvez eu devesse ter vários repositórios, com o repositório esqueleto do Ruby on Rails rastreando o repositório mestre de esqueletos? E qualquer projeto individual que esteja clonando o repositório de esqueletos do Ruby on Rails.
git branch -a
mostra?git checkout -b newbranch origin/branchiwant
funciona melhor? (sem a--track
opção)Respostas:
Nota: o git1.7.10 (abril de 2012) na verdade permite clonar apenas uma ramificação :
Você pode vê-lo em
t5500-fetch-pack.sh
:Tobu comenta que:
E desde o Git 1.9.0 (fevereiro de 2014), os clones rasos suportam a transferência de dados (push / pull), portanto essa opção é ainda mais útil agora.
Veja mais em " O
git clone --depth 1
clone superficial é mais útil do que parece? "."Desfazendo" um clone superficial é detalhado em " Converter clone superficial em clone completo " (git 1.8.3+)
Como Chris comenta:
Com o Git 2.26 (1º trimestre de 2020), "
git clone --recurse-submodules --single-branch
" agora usa a mesma opção de ramificação única ao clonar os submódulos .Consulte commit 132f600 , commit 4731957 (21 de fevereiro de 2020) por Emily Shaffer (
nasamuffin
) .(Incorporado por Junio C Hamano -
gitster
- in commit b22db26 , 05 mar 2020)fonte
git clone <url> --branch <branch> --single-branch <folder>
Funciona como um encanto.clone --depth 1
a maneira mais fácil de economizar largura de banda.--depth 1
não são seguros para o usuário, porque eles podem querer realmente pressionar / puxar com o novo clone.--single-branch
égit config remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
egit fetch --unshallow
(v2.1.4 git)Uma maneira é executar o seguinte.
Onde
branch_name
está o ramo de sua escolha e "/ your / folder" é a pasta de destino para esse ramo. É verdade que isso trará outros ramos, dando a você a oportunidade de mesclar para frente e para trás.Atualizar
Agora, começando com o Git 1.7.10, agora você pode fazer isso
fonte
--single-branch
para buscar apenas o histórico associado a esse ramo, em vez de todo o histórico e tags que o repositório contém.Usando o Git versão 1.7.3.1 (no Windows), aqui está o que eu faço (
$BRANCH
é o nome da ramificação que eu quero fazer o checkout e$REMOTE_REPO
a URL do repositório remoto que eu quero clonar):A vantagem dessa abordagem é que as chamadas subsequentes
git pull
(ougit fetch
) também farão o download da ramificação solicitada.fonte
git clone -b $BRANCH $REMOTE_REPO $BRANCH
afik eles são os mesmos?git clone -b
você fornece todas as referências remotas (todas as ramificações e tags remotas) comogit branch -a
mostra. Com o meu script, você apenas recebe uma única referência.-t $BRANCH
funciona mesmo sem-f
, o que seria buscado imediatamente. Em seguida,git fetch origin
buscava egit checkout $BRANCH
estabelecia a filial e o checkout locais. Isso é útil quando você precisa configurar o controle remoto antes de buscar, por exemplogit config remote.origin.uploadpack=/bin/upload-pack
.branch -a
mostrouorigin/$BRANCH
. Fazendogit checkout origin/$BRANCH
isso.Você pode tentar o longo caminho:
O que isso faz é:
Espero que seja algo parecido com o que você procura.
fonte
git branch -r
?git branch -r
não dá saída.Você pode fazer isso usando o comando abaixo:
fonte
Na página do manual git-clone :
--single-branch
é seu amigo durante o clone, lembre-se de usar com--branch <branch name>
ou apenas o HEAD primário remoto será clonado (mestre por padrão)Lembre-se sempre de fazer Ctrl+ F5para ler a fonte nova, não a do cache :-) (eu não sabia sobre essa opção há muito tempo.)
fonte
Basta colocar o URL e o nome do ramo.
fonte
Clone apenas um ramo. Esta é a maneira mais fácil:
fonte
Para clonar uma ramificação específica, você pode:
git clone --branch yourBranchName [email protected]
fonte
Para clonar uma ramificação do Git para a qual você não tem a chave pública, use o seguinte:
fonte
Abra o cmd.
cd folder_name
(digite o caminho para clonar a ramificação)Apenas um comando:
fonte
Um pouco tarde, mas eu queria adicionar a solução que usei para resolver este problema. Encontrei a solução aqui .
Enfim, a pergunta parece estar perguntando 'como iniciar um novo projeto a partir de uma ramificação de outro repositório?'
Para isso, a solução que usei seria criar um novo repositório no github ou onde quer que fosse. Isso servirá como repo para o seu novo projeto.
Na sua máquina local, navegue até o projeto que possui a ramificação que você deseja usar como modelo para o seu novo projeto.
Execute o comando:
O que isso fará é enviar o old_branch para o novo repo e torná-lo o ramo principal do novo repo.
Você só precisa clonar o novo repositório no diretório local do seu novo projeto e iniciar um novo projeto na ramificação antiga.
fonte
Vamos dar o exemplo de repositório de frascos. Possui 3 filiais além do master. Vamos verificar a ramificação remota 1.1.x
clonar o repositório git
cd no repositório.
buscar ramificação remota 1.1.x
checkout do ramo
Você alternará para a ramificação 1.1.xe rastreará a ramificação 1.1.x remota.
fonte
Semelhante ao que @ nosaiba-darwish disse aqui: aqui
É o que costumamos fazer em nossa empresa:
git clone -b <name_of_branch> --single-branch <git_url> folder_to_clone_locally
fonte
Se você deseja um clone superficial, pode fazer isso com:
--depth=1
implica--single-branch
.fonte
Existem basicamente 2 soluções para isso:
git clone -b <BRANCH_NAME> <GIT_REMOTE_URL>
Exemplo: git clone -b tahir https://github.com/Repository/Project.git
O comando a seguir clonará o ramo tahir do repositório git. O comando acima clona apenas o ramo específico, mas busca os detalhes de outros ramos. Você pode visualizar todos os detalhes das filiais com o comando
git branch -a
git clone -b <BRANCH_NAME> --single-branch <GIT_REMOTE_URL>
Exemplo: git clone -b tahir - único ramo https://github.com/Repository/Project.git
Agora, se você fizer um
git branch -a
, ele mostrará apenas o seu único ramo atual que você clonou e não todos os ramos. Portanto, depende de você como deseja.Espero que ajude alguém um dia !! ...
fonte
você pode usar este comando para obter uma única ramificação e renomear a pasta, se desejar manter a ramificação independente
exemplo
fonte
git clone --branch {branch-name} {repo-URI}
Exemplo:
git clone --branch dev https://github.com/ann/cleaningmachine.git
{branch-name}
{repo-URI}
fonte
Pode ser feito em 2 etapas
Clonar o repositório
git clone <http url>
Faça o checkout da filial que você deseja
git checkout $BranchName
fonte