Hier zullen we het git clone
commando in de diepte onderzoeken. git clone
is een Git command line utility die wordt gebruikt om een bestaande repository te targeten en een kloon of kopie van de doel repository te maken. Op deze pagina zullen we uitgebreide configuratieopties en veelvoorkomende use cases van git clone
bespreken., Enkele punten die we hier zullen behandelen zijn:
- klonen van een lokale of remote repository
- klonen van een kale repository
- gebruikmakend van ondiepe opties om repositories
- gedeeltelijk te klonen Git URL syntaxis en ondersteunde protocollen
bij het opzetten van een repository guide, hebben we een basic use case behandeld van git clone
. Deze pagina zal meer complexe klonen en configuratie scenario ‘ s verkennen.,
doel: repo-naar-repo samenwerkingskopie
als een project al is opgezet in een centrale repository, is het commandogit clone
de meest gebruikelijke manier voor gebruikers om een ontwikkelingskopie te verkrijgen. Net als git init
, is klonen over het algemeen een eenmalige operatie. Zodra een ontwikkelaar een werkkopie heeft verkregen, worden alle versiebeheer operaties en samenwerkingen beheerd via hun lokale repository.,
repo-naar-repo samenwerking
Het is belangrijk om te begrijpen dat Git ‘ s idee van een “werkkopie” heel anders is dan de werkkopie die je krijgt door de code uit te checken van een SVN repository. In tegenstelling tot SVN maakt Git geen onderscheid tussen de werkkopie en de centrale repository—het zijn allemaal volwaardige Git repositories.
Dit maakt samenwerken met Git fundamenteel anders dan met SVN. Terwijl SVN afhankelijk is van de relatie tussen de centrale repository en de werkkopie, is het samenwerkingsmodel van Git gebaseerd op repository-to-repository interactie., In plaats van een werkkopie in SVN ‘ s centrale repository te controleren, push of pull je commits van de ene repository naar de andere.
natuurlijk is er niets dat je ervan weerhoudt bepaalde Git repo ‘ s een speciale betekenis te geven. Bijvoorbeeld, door simpelweg één Git repo aan te wijzen als de “centrale” repository, is het mogelijk om een gecentraliseerde workflow te repliceren met Git. Het punt is, dit wordt bereikt door conventies in plaats van te worden vastgezet in de VCS zelf.,
Usage
git clone
wordt voornamelijk gebruikt om naar een bestaande repo te wijzen en een kloon of kopie van die repo te maken in een nieuwe map, op een andere locatie. De originele repository kan zich bevinden op het lokale bestandssysteem of op remote machine toegankelijke ondersteunde protocollen. Hetgit clone
Commando kopieert een bestaande Git repository. Dit is een soort SVN checkout, behalve dat de “werkkopie” een volwaardige Git repository is-het heeft zijn eigen geschiedenis, beheert zijn eigen bestanden, en is een volledig geïsoleerde omgeving van de originele repository.,
voor het gemak maakt klonen automatisch een verbinding op afstand aan, genaamd “origin”, die naar de oorspronkelijke repository verwijst. Dit maakt het heel gemakkelijk om te communiceren met een centrale repository. Deze automatische verbinding wordt tot stand gebracht door Git refs aan te maken op de remote branch heads onder refs/remotes/origin
en door remote.origin.url
en remote.origin.fetch
configuratie variabelen te initialiseren.
een voorbeeld dat het gebruik van git clone
demonstreert, kan worden gevonden in de handleiding voor het opzetten van een repository., Het voorbeeld hieronder laat zien hoe je een lokale kopie kunt verkrijgen van een centrale repository die is opgeslagen op een server die toegankelijk is op example.com
met behulp van de SSH gebruikersnaam john:
git clone ssh://[email protected]/path/to/my-project.git
cd my-project
# Start working on the project
het eerste commando initialiseert een nieuwe Git repository in de my-project
folder op je lokale machine en vult het met de inhoud van het centrale archief. Dan kun je cd in het project en beginnen met het bewerken van bestanden, het committen van snapshots, en interactie met andere repositories., Merk ook op dat de .git
extensie wordt weggelaten uit de gekloonde repository. Dit weerspiegelt de niet-kale status van de lokale kopie.
klonen naar een specifieke map
git clone <repo> <directory>
kloon de repository op <repo>
in de map genaamd~<directory>!
op de lokale machine.
klonen van een specifieke tag
git clone --branch <tag> <repo>
klonen van de repository op <repo>
en alleen klonen van de ref voor<tag>
.,
ondiepe kloon
git clone -depth=1 <repo>
kloon de repository op <repo>
en klonen alleen de
geschiedenis van commits gespecificeerd door de optie depth=1. In dit voorbeeld wordt een kloon gemaakt van <repo>
en wordt alleen de meest recente commit opgenomen in de nieuwe gekloonde Repo. Ondiep klonen is het nuttigst bij het werken met repo ‘ s die een uitgebreide commit historie hebben. Een uitgebreide commit geschiedenis kan schalen problemen veroorzaken zoals schijfruimte gebruikslimieten en lange wachttijden bij het klonen., Een ondiepe kloon kan helpen deze schalen problemen te verlichten.
configuratie opties
git clone-branch
het -branch
argument laat je een specifieke branch specificeren om te klonen in plaats van de branch waarnaar de remote HEAD
verwijst, meestal de master branch. Daarnaast kun je een tag doorgeven in plaats van branch voor hetzelfde effect.
git clone -branch new_feature git://remoterepository.git
Dit bovenstaande voorbeeld zou alleen de new_feature
branch van de remote Git repository klonen., Dit is puur een overtuig hulpprogramma om u tijd te besparen van het downloaden van deHEAD
ref van de repository en vervolgens de ref te moeten ophalen die u nodig hebt.
git clone-mirror vs.git clone-bare
git clone –bare
vergelijkbaar met git init --bare,
wanneer het -bare
argument wordt doorgegeven aan git clone,
wordt een kopie van de remote repository gemaakt met een weggelaten werkmap., Dit betekent dat een repository zal worden opgezet met de geschiedenis van het project dat kan worden gepusht en gepulled, maar niet direct kan worden bewerkt. Bovendien zullen geen Remote branches voor de repo worden geconfigureerd met de-bare
repository. Zoals git init --bare,
wordt dit gebruikt om een gehoste repository aan te maken die ontwikkelaars niet direct zullen bewerken.
git clone — mirror
Het --mirror
argument geeft impliciet ook het --bare
argument door., Dit betekent dat het gedrag van --bare
wordt overgenomen door --mirror
. Wat resulteert in een kale repo zonder bewerkbare werkbestanden. Bovendien zal --mirror
alle extended refs van de remote repository klonen, en de remote branch tracking configuratie onderhouden. U kunt dan git remote
update uitvoeren op de mirror en het zal alle refs van de origin repo overschrijven. Geeft u exacte ‘gespiegelde’ functionaliteit.,
andere configuratie opties
voor een uitgebreide lijst van andere git clone opties bezoek de officiële Git documentatie. In dit document, we zullen ingaan op een aantal andere gemeenschappelijke opties.
git clone — template
git clone --template=<template_directory> <repo location>
klonen de repo op <repo location>
en past de template van<template directory>
toe op de nieuw aangemaakte lokale branch. Een grondige herziening van Git templates kan gevonden worden op onze git init
pagina.,
Git URL ‘s
Git heeft zijn eigen URL syntaxis die gebruikt wordt om remote repository locaties door te geven aan Git commando’ s. Omdat git clone
het meest gebruikt wordt op remote repositories zullen we de GIT URL syntaxis hier bekijken.
Git URL-protocollen
-SSH
Secure Shell (SSH) is een alomtegenwoordig geauthenticeerd netwerkprotocol dat gewoonlijk standaard wordt geconfigureerd op de meeste servers. Omdat SSH een geverifieerd protocol is, moet u referenties met de hostingserver vaststellen voordat u verbinding maakt., ssh://host.xz/path/to/repo.git/
– GIT
– HTTP
Hyper text transfer protocol. Het protocol van het web, het meest gebruikt voor het overbrengen van webpagina HTML-gegevens over het Internet. Git kan geconfigureerd worden om te communiceren via HTTP
samenvatting
In dit document namen we een diepe blik op git clone
. De belangrijkste afhaalpunten zijn:git clone
wordt gebruikt om een kopie van een doelrepo
2 te maken. De doelrepo kan lokaal of op afstand
3 zijn. Git ondersteunt een paar netwerkprotocollen om verbinding te maken met remote repo ‘ s
4., Er zijn veel verschillende configuratieopties beschikbaar die de inhoud van de kloon
veranderen