Här kommer vi att undersöka kommandot git clone
på djupet. git clone
är ett git-kommandoradsverktyg som används för att rikta in ett befintligt förråd och skapa en klon eller kopia av målarkivet. På den här sidan diskuterar vi utökade konfigurationsalternativ och vanliga användningsfall för git clone
., Några punkter som vi täcker här är:
- kloning av ett lokalt eller fjärrförråd
- kloning av ett tomt förråd
- användning av grunda alternativ för att delvis klona förråd
- git-URL-syntax och stödda protokoll
vid upprättandet av en förvarsguide täckte vi ett grundläggande användningsfall förgit clone
. Denna sida kommer att utforska mer komplexa kloning och konfigurationsscenarier.,
syfte: repo-to-repo collaboration development copy
om ett projekt redan har installerats i ett centralt förråd är kommandotgit clone
det vanligaste sättet för användare att få en utvecklingskopia. Somgit init
är kloning i allmänhet en engångsåtgärd. När en utvecklare har fått en fungerande kopia hanteras alla versionskontrolloperationer och samarbeten via deras lokala arkiv.,
Repo-to-repo samarbete
det är viktigt att förstå att Git: s idé om en ”arbetskopia” skiljer sig mycket från den arbetskopia du får genom att kolla in kod från ett SVN-arkiv. Till skillnad från SVN gör Git ingen skillnad mellan arbetskopian och det centrala förvaret—de är alla fullfjädrade Git-förråd.
detta gör samarbetet med Git fundamentalt annorlunda än med SVN. Medan SVN är beroende av förhållandet mellan det centrala arkivet och arbetskopian, baseras Gits samarbetsmodell på interaktion mellan arkiv och arkiv., Istället för att kontrollera en arbetskopia i SVN: s centrala förråd trycker du på eller drar begår från ett förråd till ett annat.
naturligtvis finns det inget som hindrar dig från att ge vissa Git repos speciell betydelse. Till exempel, genom att helt enkelt utse en Git repo som ”central” förvaret, är det möjligt att replikera ett centraliserat arbetsflöde med Git. Poängen är att detta uppnås genom konventioner snarare än att vara svårt in i själva VCS.,
användning
git clone
används främst för att peka på en befintlig repo och göra en klon eller kopia av den repo på i en ny katalog, på en annan plats. Det ursprungliga arkivet kan placeras på det lokala filsystemet eller på fjärranslutna maskinåtkomliga protokoll som stöds. Kommandotgit clone
kopierar ett befintligt Git-arkiv. Det här är ungefär som SVN-kassan, förutom ”arbetskopian” är ett fullvärdigt Git-förråd—det har sin egen historia, hanterar egna filer och är en helt isolerad miljö från det ursprungliga förvaret.,
som en bekvämlighet skapar kloning automatiskt en fjärranslutning som heter ”ursprung” som pekar tillbaka till det ursprungliga arkivet. Detta gör det väldigt enkelt att interagera med ett centralt förråd. Den här automatiska anslutningen upprättas genom att skapa Git refs till fjärrgrenhuvudena under refs/remotes/origin
och genom att initiera remote.origin.url
och remote.origin.fetch
konfigurationsvariabler.
ett exempel som visar att du användergit clone
finns i konfigurationen av en arkivguide., Exemplet nedan visar hur du får en lokal kopia av ett centralt förråd som lagras på en server som är tillgänglig på example.com
med hjälp av SSH-användarnamnet john:
git clone ssh://[email protected]/path/to/my-project.git
cd my-project
# Start working on the project
det första kommandot initierar ett nytt Git-förråd i mappen my-project
på din lokala dator och fyller det med innehållet i det centrala förvaret. – herr talman! Sedan kan du cd in i projektet och börja redigera filer, begå ögonblicksbilder och interagera med andra arkiv., Observera också att tillägget.git
utelämnas från det klonade förvaret. Detta återspeglar den lokala kopians icke-nakna status.
kloning till en viss mapp
git clone <repo> <directory>
klona arkivet som finns på<repo>
I mappen som heter~<directory>!
på den lokala maskinen.
klona en specifik tagg
git clone --branch <tag> <repo>
klona arkivet som finns på<repo>
och klona bara ref för<tag>
.,
Grunt klon
git clone -depth=1 <repo>
klona arkivet som finns på<repo>
och klona bara
– historiken för begår som anges av alternativet depth=1. I det här exemplet görs en klon av <repo>
och endast den senaste commit ingår i den nya klonade Repo. Grunt kloning är mest användbart när man arbetar med repos som har en omfattande begå historia. En omfattande begå historia kan orsaka skalning problem såsom disk utrymme användningsgränser och långa väntetider vid kloning., En ytlig klon kan hjälpa till att lindra dessa skalningsproblem.
konfigurationsalternativ
git clone-branch
argumentet-branch
låter dig ange en specifik gren att klona istället för grenen fjärrkontrollenHEAD
pekar på, vanligtvis huvudgrenen. Dessutom kan du skicka en tagg istället för gren för samma effekt.
git clone -branch new_feature git://remoterepository.git
det här exemplet skulle bara klona new_feature
– filialen från fjärrgit-arkivet., Detta är rent en övertyga verktyg för att spara tid från att ladda ner HEAD
ref av arkivet och sedan behöva dessutom hämta ref du behöver.
git clone-mirror vs. git clone-bare
git clone –bare
liknargit init --bare,
när-bare
argumentet skickas tillgit clone,
en kopia av fjärrförvaret kommer att göras med en utelämnad arbetskatalog., Detta innebär att ett förråd kommer att inrättas med historien om projektet som kan skjutas och dras från, men kan inte redigeras direkt. Dessutom konfigureras inga fjärranslutna grenar för repon med-bare
– arkivet. Gilla git init --bare,
detta används för att skapa ett värdförråd som utvecklare inte redigerar direkt.
git clone –mirror
skickar--mirror
argumentet implicit passerar--bare
argumentet också., Detta innebär att --bare
ärvs av --mirror
. Resulterar i en bar repo utan redigerbara arbetsfiler. Dessutom kommer --mirror
att klona alla utökade refs i fjärrförvaret och upprätthålla fjärr grenspårningskonfiguration. Du kan sedan köragit remote
uppdatering på spegeln och det kommer att skriva över alla refs från origin repo. Ger dig exakt ”speglad” funktionalitet.,
andra konfigurationsalternativ
för en omfattande lista över andra git-klonalternativ besök den officiella git-dokumentationen. I det här dokumentet kommer vi att beröra några andra vanliga alternativ.
git clone –template
git clone --template=<template_directory> <repo location>
kloner repo på<repo location>
och tillämpar mallen från<template directory>
till den nyskapade lokala grenen. En grundlig refrence på GIT mallar kan hittas på vårgit init
sida.,
Git-webbadresser
Git har sin egen URL-syntax som används för att skicka fjärrförvarsplatser till Git-kommandon. Eftersom git clone
oftast används på fjärrförråd kommer vi att undersöka Git-URL-syntax här.
git URL-protokoll
– ssh
Secure Shell (SSH) är en allestädes närvarande autentiserade nätverksprotokoll som vanligtvis konfigureras som standard på de flesta servrar. Eftersom SSH är ett autentiserat protokoll måste du upprätta referenser med hosting-servern innan du ansluter., ssh://host.xz/path/to/repo.git/
– GIT
– HTTP
Hyper text transfer protocol. Protokollet av webben, som oftast används för att överföra webbsida HTML-data över Internet. Git kan konfigureras för att kommunicera via HTTP
sammanfattning
i det här dokumentet tog vi en djup titt pågit clone
. De viktigaste takeaways är:git clone
används för att skapa en kopia av ett mål repo
2. Målrepo kan vara lokal eller fjärr
3. Git stöder några nätverksprotokoll för att ansluta till fjärranslutna repos
4., Det finns många olika konfigurationsalternativ tillgängliga som ändrar innehållet i klonen