Git Clone Branch - Como clonar um branch específico

Ao contrário dos sistemas de controle de versão centralizados mais antigos, como SVN e CVS, o Git é distribuído. Cada desenvolvedor tem o histórico completo e o controle de seu código local ou remotamente. Eles também podem acessar ou manipular várias partes do código conforme julgarem adequado em diferentes locais.

Desde que Linus Torvalds (o famoso criador do kernel do sistema operacional Linux) criou o Git em 2005 para o desenvolvimento do kernel Linux, ele se tornou o sistema de controle de versão moderno mais amplamente usado no mundo.

Neste artigo, apresentarei a você o clone Git e os fluxos de trabalho de branch do Git e mostrarei como você pode clonar um branch específico com base em suas necessidades. Vamos começar! ?

Pré-requisitos

  • Conhecimento básico do terminal
  • Capacidade de digitar comandos no terminal
  • Git instalado (ainda mostrarei como)
  • Uma conta GitHub
  • Um sorriso em seu rosto (põe aquele sorriso amigo?)

Introdução rápida ao Git e GitHub

De acordo com a Wikipedia,

Git é um sistema de controle de versão distribuído projetado para rastrear alterações em um projeto (código) no desenvolvimento de software. Destina-se a reforçar a coordenação, colaboração, velocidade e eficiência entre os desenvolvedores.

O GitHub, por outro lado, é um serviço de hospedagem baseado na web para controle de versão usando Git. Ele oferece todo o controle de versão distribuído e funcionalidade de gerenciamento de código-fonte do Git, além de adicionar mais recursos para código de computador.

Como instalar o Git no Windows

Baixe e instale o Git para Windows Installer mais recente aqui.

Como instalar o Git no Linux

Aqui estão os comandos baseados em sua distribuição Linux:

Debian ou Ubuntu

sudo apt-get update sudo apt-get install git

Fedora

sudo dnf install git

CentOS

sudo yum install git

Arch Linux

sudo pacman -Sy git

Gentoo

sudo emerge --ask --verbose dev-vcs/git

Como instalar o Git em um Mac

Baixe e instale o instalador Git para Mac mais recente aqui.

Ou você pode digitar este comando:

brew install git

Agora que instalamos o Git, vamos prosseguir para o tutorial.

Introdução ao Git Clone

Git permite que você gerencie e crie versões de seus projetos em um "repositório". Este repositório é armazenado em um serviço de hospedagem baseado na web para controle de versão, como o GitHub.

Você pode então clonar este repositório para sua máquina local e ter todos os arquivos e branches localmente (explicarei mais sobre branches em breve).

Por exemplo, você pode clonar o repositório de freeCodeCamp com SSH assim:

git clone [email protected]:freeCodeCamp/freeCodeCamp.git

Introdução aos ramos Git

Ao trabalhar em um projeto, você provavelmente terá recursos diferentes. E vários colaboradores estarão trabalhando neste projeto e em seus recursos.

Ramificações permitem que você crie um "playground" com os mesmos arquivos da masterramificação. Você pode usar este branch para construir recursos independentes, testar novos recursos, fazer alterações significativas, criar correções, escrever documentos ou experimentar ideias sem quebrar ou afetar o código de produção. Quando terminar, você mescla a ramificação na masterramificação de produção .

Ramificação é um conceito central no Git que também é usado no GitHub para gerenciar fluxos de trabalho de diferentes versões de um projeto. O masterbranch é sempre o branch padrão em um repositório que geralmente é considerado "código de produção e implementável". Novas ramificações como passwordless-authou refactor-signup-uxpodem ser criadas a partir da masterramificação.

Como clonar ramos do Git

Embora você possa clonar repositórios com o git clonecomando, lembre-se de que ele clona o branch e o remoto HEAD. Isso geralmente é masterpor padrão e inclui todas as outras ramificações no repositório.

Portanto, ao clonar um repositório, você clona o mastere todos os outros branches. Isso significa que você terá que fazer o checkout de outro branch sozinho.

Digamos que sua tarefa em um projeto seja trabalhar em um recurso para adicionar autenticação sem senha a um painel de usuário. E esse recurso está no passwordless-authramo.

Você realmente não precisa do masterbranch, já que seu "branch de recurso" será mesclado masterposteriormente. Como então você clona este passwordless-authbranch sem obter todos os outros branches com "um monte de arquivos que você não precisa"?

Criei este repositório de amostra para explicar isso. Este repositório contém um blog simples construído com Nextjs e tem quatro branches fictícios:

  • mestre
  • dev
  • encenação
  • autenticação sem senha

No Nextjs, qualquer arquivo dentro da pasta pages/apié mapeado para o /api/*caminho e será tratado como um endpoint da API em vez de um page. Em nosso repositório, criei diferentes APIs fictícias neste diretório para tornar cada branch diferente.

O masterramo contém o arquivo páginas / API / hello.js enquanto passwordless-authmantém os arquivos páginas / api / auth.js . Cada arquivo retorna apenas uma resposta de texto fictícia. Veja mastera resposta da API hello aqui (com uma mensagem especial para você?).

Vamos clonar o repositório:

git clone [email protected]:BolajiAyodeji/nextjs-blog.git

Isso nos dá acesso a todos os branches neste repositório e você pode alternar facilmente entre cada um para ver cada versão e seus arquivos.

git branch -a

Quer saber de onde vieram os remotos / origem / .. ramos?

Ao clonar um repositório, você obtém dados de um repositório na Internet ou de um servidor interno conhecido como remoto . A palavra origem é um apelido criado pelo seu Git para substituir a URL remota (você pode alterar ou especificar outro apelido, se desejar).

Essas ramificações remotes / origin / .. apontam de volta para o repositório de origem que você clonou da Internet para que ainda possa executar pull / push da origem.

Portanto, quando você clona masterem sua máquina, remotes/origin/mastero masterbranch original está na Internet e masterestá em sua máquina local. Então você vai puxar / empurrar de e para o remotes/origin/master.

Em resumo, Remote é a URL que aponta para o repositório na Internet, enquanto Origin é um alias para esta URL remota.

Como clonar um ramo específico

Agora vamos clonar um branch específico de nosso repositório de demonstração. Existem duas maneiras de clonar um branch específico. Você também pode:

  • Clone o repositório, busque todos os branches e faça checkout em um branch específico imediatamente.
  • Clone o repositório e busque apenas um único branch.

opção um

git clone --branch  

ou

git clone -b  

Com isso, você busca todos os branches no repositório, faz checkout naquele que você especificou e o branch específico se torna o branch local configurado para git pushe git pull. Mas você ainda buscou todos os arquivos de cada ramificação. Isso pode não ser o que você deseja, certo? ?

Vamos testar:

 git clone -b passwordless-auth [email protected]:BolajiAyodeji/nextjs-blog.git

Isso é configurado automaticamente passwordless-authcomo o branch local, mas ainda rastreia outros branches.

Opção Dois

git clone --branch  --single-branch 

ou

git clone -b  --single-branch 

Isso executa a mesma ação da opção um, exceto que a --single-branchopção foi introduzida no Git versão 1.7.10 e posterior. Ele permite que você busque apenas arquivos do branch especificado sem buscar outros branches.

Vamos testar:

git clone -b passwordless-auth --single-branch [email protected]:BolajiAyodeji/nextjs-blog.git

Isso é configurado automaticamente passwordless-authcomo o branch local e rastreia apenas este branch.

Se você executar, cd pages/apiencontrará o auth.jsarquivo no passwordless-authbranch conforme o esperado na configuração anterior.

Conclusão

Você pode estar ficando sem Internet ou espaço de armazenamento, mas precisa trabalhar em uma tarefa em uma filial específica. Ou você pode querer clonar um branch específico com arquivos limitados por vários motivos. Felizmente, o Git oferece flexibilidade para fazer isso. Flexione seus músculos e experimente, há muito mais "git" para aprender.

Um de cada vez, certo? ✌?