Git Clone Branch - Hvordan klone en bestemt gren

I motsetning til eldre sentraliserte versjonskontrollsystemer som SVN og CVS, distribueres Git. Hver utvikler har full historikk og kontroll over koden sin lokalt eller eksternt. De kan også få tilgang til eller manipulere flere deler av koden etter eget skjønn fra forskjellige steder.

Siden Linus Torvalds (den berømte skaperen av Linux-operativsystemkjernen) opprettet Git i 2005 for Linux-kjerneutvikling, har det blitt det mest brukte moderne versjonskontrollsystemet i verden.

I denne artikkelen vil jeg introdusere deg for Git-klon- og Git-grenarbeidsflytene, og jeg vil vise deg hvordan du kan klone en bestemt gren basert på dine behov. La oss begynne! ?

Forutsetninger

  • Grunnleggende kunnskap om terminalen
  • Evne til å skrive kommandoer i terminalen
  • Git installert (jeg vil fremdeles vise deg hvordan)
  • En GitHub-konto
  • Et smil om ansiktet ditt (legg den smilevennen din?)

Rask introduksjon til Git og GitHub

I følge Wikipedia,

Git er et distribuert versjonskontrollsystem designet for å spore endringer i et prosjekt (kode) i programvareutvikling. Det er ment å håndheve koordinering, samarbeid, hastighet og effektivitet blant utviklere.

GitHub er derimot en nettbasert hostingtjeneste for versjonskontroll ved bruk av Git. Den tilbyr all den distribuerte versjonskontrollen og kildekodeadministrasjonsfunksjonaliteten til Git, samt å legge til flere funksjoner for datamaskinkode.

Slik installerer du Git på Windows

Last ned og installer den nyeste Git for Windows Installer her.

Slik installerer du Git på Linux

Her er kommandoene basert på Linux distro:

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

Slik installerer du Git på en Mac

Last ned og installer det nyeste installasjonsprogrammet for Git for Mac her.

Eller du kan skrive denne kommandoen:

brew install git

Nå som vi har Git installert, la oss gå videre til opplæringen.

Introduksjon til Git Clone

Git lar deg administrere og versjonere prosjektet (e) i et "repository". Dette depotet er lagret på en nettbasert hostingtjeneste for versjonskontroll, som GitHub.

Du kan deretter klone dette depotet til din lokale maskin og ha alle filene og grenene lokalt (jeg vil snart forklare mer om filialer).

For eksempel kan du klone freeCodeCamps lager med SSH slik:

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

Introduksjon til Git Branches

Når du jobber med et prosjekt, vil du sannsynligvis ha forskjellige funksjoner. Og flere bidragsytere vil jobbe med dette prosjektet og dets funksjoner.

Grenene lar deg lage en "lekeplass" med de samme filene i mastergrenen. Du kan bruke denne grenen til å bygge uavhengige funksjoner, teste nye funksjoner, gjøre endringer, lage rettelser, skrive dokumenter eller prøve ideer uten å bryte eller påvirke produksjonskoden. Når du er ferdig, slår du sammen filialen i produksjonsgrenen master.

Forgrening er et kjernekonsept i Git som også brukes i GitHub for å administrere arbeidsflyter i forskjellige versjoner av ett prosjekt. Den mastergrenen er alltid standardgrenen i et depot som oftest regnes som "produksjon og deployerbare code". Nye grener liker passwordless-autheller refactor-signup-uxkan opprettes fra mastergrenen.

Hvordan klone Git-grener

Mens du kan klone arkiver med git clonekommandoen, må du huske at dette kloner grenen og fjernkontrollen HEAD. Dette er vanligvis mastersom standard og inkluderer alle andre grener i depotet.

Så når du kloner et depot, kloner du masterog alle andre grener. Dette betyr at du må sjekke ut en annen gren selv.

La oss si at oppgaven din i et prosjekt er å jobbe med en funksjon for å legge til passordfri autentisering til et brukerdashboard. Og denne funksjonen er i passwordless-authgrenen.

Du trenger virkelig ikke masterfilialen siden "funksjonsgrenen" blir slått sammen til masteretterpå. Hvordan kloner du da denne passwordless-authgrenen uten å hente alle andre grener med "en haug med filer du ikke trenger"?

Jeg opprettet dette eksempellageret for å forklare dette. Dette depotet har en enkel blogg bygget med Nextjs og har fire dummy-grener:

  • herre
  • dev
  • iscenesettelse
  • passordfri-autentisering

I Nextjs blir alle filer i mappen pages/apitilordnet /api/*banen og vil bli behandlet som et API-endepunkt i stedet for en page. I vårt depot har jeg opprettet forskjellige dummy APIer i denne katalogen for å gjøre hver gren forskjellig.

Den mastergrenen holder filen sider / api / hello.js mens passwordless-authholder filen sider / api / auth.js . Hver fil returnerer bare et dummy-tekstsvar. Se masterhei API-svar her (med en spesiell melding til deg?).

La oss klone depotet:

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

Dette gir oss tilgang til alle grener i dette depotet, og du kan enkelt veksle mellom hver for å se hver versjon og filene.

git branch -a

Lurer du på hvor fjernkontrollene / opprinnelsen / .. grenene kom fra?

Når du kloner et depot, henter du data fra et depot på internett eller en intern server kjent som fjernkontrollen . Ordet opprinnelse er et alias opprettet av Git for å erstatte den eksterne URL-en (du kan endre eller spesifisere et annet alias hvis du vil).

Disse fjernkontrollene / origin / .. grenene peker deg tilbake til opprinnelsesregisteret du klonet fra internett slik at du fremdeles kan utføre pull / push fra opprinnelsen.

Så når du kloner masterpå maskinen din, remotes/origin/masterer den opprinnelige mastergrenen på internett, og masterer på din lokale maskin. Så du vil trekke / skyve fra og til remotes/origin/master.

Oppsummert er Remote URL-en som viser deg til depotet på internett mens Origin er et alias for denne eksterne URL-en.

Hvordan klone en bestemt gren

La oss nå klone en bestemt gren fra demo-arkivet vårt. Det er to måter å klone en bestemt gren på. Du kan enten:

  • Klon depotet, hent alle grener og kassen til en bestemt gren umiddelbart.
  • Klon depotet og hente bare en enkelt gren.

Alternativ ett

git clone --branch  

eller

git clone -b  

Med dette henter du alle grenene i depotet, kassen til den du spesifiserte, og den spesifikke grenen blir den konfigurerte lokale grenen for git pushog git pull. Men du hentet fremdeles alle filene fra hver gren. Dette er kanskje ikke det du vil, ikke sant? ?

La oss teste det:

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

Dette konfigureres automatisk passwordless-authsom den lokale grenen, men sporer fortsatt andre grener.

Alternativ to

git clone --branch  --single-branch 

eller

git clone -b  --single-branch 

Dette utfører den samme handlingen som alternativ ett, bortsett fra at --single-branchalternativet ble introdusert i Git versjon 1.7.10 og senere. Den lar deg bare hente filer fra den angitte grenen uten å hente andre grener.

La oss teste det:

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

Dette konfigureres automatisk passwordless-authsom den lokale grenen og sporer bare denne grenen.

Hvis du kjører, cd pages/apifinner du auth.jsfilen i passwordless-authgrenen som forventet fra forrige oppsett.

Konklusjon

Du går kanskje tom for internett eller lagringsplass, men du må jobbe med en oppgave i en bestemt gren. Eller du vil kanskje klone en bestemt gren med begrensede filer av forskjellige årsaker. Heldigvis gir Git deg fleksibiliteten til å gjøre dette. Flekk musklene og prøv det, det er mye mer "Git" å lære.

En om gangen, ja? ✌?