Git Clone Branch - Come clonare un ramo specifico

A differenza dei vecchi sistemi di controllo delle versioni centralizzati come SVN e CVS, Git è distribuito. Ogni sviluppatore ha la cronologia completa e il controllo del proprio codice in locale o in remoto. Possono anche accedere o manipolare diverse parti del codice che ritengono adatte da posizioni diverse.

Da quando Linus Torvalds (il famoso creatore del kernel del sistema operativo Linux) ha creato Git nel 2005 per lo sviluppo del kernel Linux, è diventato il sistema di controllo delle versioni moderno più utilizzato al mondo.

In questo articolo, ti presenterò i flussi di lavoro Git clone e Git branch e ti mostrerò come clonare un ramo specifico in base alle tue esigenze. Cominciamo! ?

Prerequisiti

  • Conoscenza di base del terminale
  • Possibilità di digitare comandi nel terminale
  • Git installato (ti mostrerò ancora come)
  • Un account GitHub
  • Un sorriso sul tuo viso (metti su quel sorriso amico?)

Introduzione rapida a Git e GitHub

Secondo Wikipedia,

Git è un sistema di controllo della versione distribuito progettato per tenere traccia delle modifiche a un progetto (codice) nello sviluppo del software. Ha lo scopo di rafforzare il coordinamento, la collaborazione, la velocità e l'efficienza tra gli sviluppatori.

GitHub, d'altra parte, è un servizio di hosting basato sul web per il controllo della versione utilizzando Git. Offre tutto il controllo della versione distribuita e la funzionalità di gestione del codice sorgente di Git, oltre ad aggiungere ulteriori funzionalità per il codice del computer.

Come installare Git su Windows

Scarica e installa l'ultima versione di Git per Windows Installer qui.

Come installare Git su Linux

Ecco i comandi basati sulla tua distribuzione Linux:

Debian o 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

Come installare Git su un Mac

Scarica e installa l'ultimo programma di installazione di Git per Mac qui.

Oppure puoi digitare questo comando:

brew install git

Ora che abbiamo installato Git, passiamo al tutorial.

Introduzione a Git Clone

Git ti consente di gestire e versione dei tuoi progetti in un "repository". Questo repository è archiviato su un servizio di hosting basato sul Web per il controllo della versione, come GitHub.

Puoi quindi clonare questo repository sulla tua macchina locale e avere tutti i file e le diramazioni localmente (spiegherò di più sui rami presto).

Ad esempio, puoi clonare il repository di freeCodeCamp con SSH in questo modo:

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

Introduzione a Git Branches

Quando lavori a un progetto, probabilmente avrai caratteristiche diverse. E più collaboratori lavoreranno a questo progetto e alle sue caratteristiche.

I rami ti permettono di creare un "playground" con gli stessi file nel masterramo. È possibile utilizzare questo ramo per creare funzionalità indipendenti, testare nuove funzionalità, apportare modifiche sostanziali, creare correzioni, scrivere documenti o provare idee senza interrompere o influenzare il codice di produzione. Quando hai finito, unisci il ramo al ramo di produzione master.

La ramificazione è un concetto fondamentale in Git che viene utilizzato anche in GitHub per gestire i flussi di lavoro di diverse versioni di un progetto. Il masterramo è sempre il ramo predefinito in un repository che viene spesso considerato "codice di produzione e distribuibile". Nuovi rami come passwordless-autho refactor-signup-uxpossono essere creati dal masterramo.

Come clonare i rami di Git

Anche se puoi clonare i repository con il git clonecomando, tieni presente che questo clona il ramo e il telecomando HEAD. Questo di solito è masterpredefinito e include tutti gli altri rami del repository.

Quindi, quando cloni un repository, cloni il mastere tutti gli altri rami. Ciò significa che dovrai controllare tu stesso un altro ramo.

Supponiamo che il tuo compito su un progetto sia lavorare su una funzionalità per aggiungere l'autenticazione senza password a un dashboard utente. E questa caratteristica è nel passwordless-authramo.

Non hai davvero bisogno del masterramo poiché il tuo "ramo delle funzionalità" verrà unito in masterseguito. Come fai allora a clonare questo passwordless-authramo senza recuperare tutti gli altri rami con "un mucchio di file che non ti servono"?

Ho creato questo repository di esempio per spiegare questo. Questo repository contiene un semplice blog creato con Nextjs e ha quattro rami fittizi:

  • maestro
  • dev
  • messa in scena
  • autenticazione senza password

In Nextjs, qualsiasi file all'interno della cartella pages/apiviene mappato al /api/*percorso e verrà trattato come un endpoint API anziché un file page. Nel nostro repository, ho creato diverse API fittizie in questa directory per rendere ogni ramo diverso.

Il masterramo contiene il file di pagine / API / hello.js mentre passwordless-authcontiene il file pagine / api / auth.js . Ogni file restituisce solo una risposta di testo fittizio. Vedi masterla risposta dell'API hello qui (con un messaggio speciale per te?).

Cloniamo il repository:

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

Questo ci dà accesso a tutti i rami in questo repository e puoi facilmente passare da uno all'altro per vedere ogni versione ei suoi file.

git branch -a

Ti chiedi da dove provenissero i telecomandi / origine / .. rami?

Quando cloni un repository, esegui il pull dei dati da un repository su Internet o da un server interno noto come remoto . La parola origine è un alias creato dal tuo Git per sostituire l'URL remoto (puoi modificare o specificare un altro alias se lo desideri).

Questi rami remoti / origin / .. ti rimandano al repository di origine che hai clonato da Internet in modo da poter ancora eseguire il pull / push dall'origine.

Quindi, quando cloni mastersulla tua macchina, remotes/origin/masterè il masterramo originale su Internet e si mastertrova sulla tua macchina locale. Quindi tirerai / spingerai da e verso il file remotes/origin/master.

In sintesi Remote è l'URL che ti indirizza al repository su Internet mentre Origin è un alias per questo URL remoto.

Come clonare un ramo specifico

Ora cloniamo un ramo specifico dal nostro repository demo. Esistono due modi per clonare un ramo specifico. Puoi:

  • Clona il repository, recupera tutti i rami ed esegui immediatamente il checkout in un ramo specifico.
  • Clona il repository e recupera solo un singolo ramo.

Opzione uno

git clone --branch  

o

git clone -b  

Con questo, prendi tutti i rami nel repository, fai il checkout a quello che hai specificato e il ramo specifico diventa il ramo locale configurato per git pushe git pull. Ma hai comunque recuperato tutti i file da ogni ramo. Questo potrebbe non essere quello che vuoi, giusto? ?

Proviamolo:

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

Questo si configura automaticamente passwordless-authcome il ramo locale ma tiene comunque traccia degli altri rami.

Opzione due

git clone --branch  --single-branch 

o

git clone -b  --single-branch 

Esegue la stessa azione dell'opzione uno, tranne per il fatto che l' --single-branchopzione è stata introdotta in Git versione 1.7.10 e successive. Ti consente di recuperare solo i file dal ramo specificato senza recuperare altri rami.

Proviamolo:

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

Questo si configura automaticamente passwordless-authcome il ramo locale e tiene traccia solo di questo ramo.

Se esegui cd pages/apitroverai il auth.jsfile nel passwordless-authramo come previsto dalla configurazione precedente.

Conclusione

Potresti essere a corto di Internet o di spazio di archiviazione, ma devi lavorare su un'attività in un ramo specifico. Oppure potresti voler clonare un ramo specifico con file limitati per vari motivi. Fortunatamente, Git ti offre la flessibilità per farlo. Fletti i muscoli e provalo, c'è molto di più "Git" da imparare.

Uno alla volta, vero? ✌?