git init
Op deze pagina wordt uitgebreid ingegaan op de opdracht git init
. Aan het einde van deze pagina word je geïnformeerd over de belangrijkste functies en uitgebreide functies van git init
. Deze verkenning omvat:
- opties en gebruik van
git init
- overzicht van de
.git
-map - aangepaste omgevingswaarden voor de
git init
-map git init
versusgit clone
- lege
git init
-repository's git init
-sjablonen
De opdracht git init
maakt een nieuwe Git-repository aan. Deze kan worden gebruikt om een bestaand project zonder versie om te zetten naar een Git-repository of om een nieuwe, lege repository te initialiseren. De meeste andere Git-opdrachten zijn niet beschikbaar buiten een geïnitialiseerde repository, dus dit is meestal de eerste opdracht die je in een nieuw project uitvoert.
Als je git init
uitvoert, wordt er een .git
-submap in de huidige werkmap aangemaakt. Deze bevat alle benodigde Git-metagegevens voor de nieuwe repository. Deze metagegevens omvatten submappen voor objecten, referenties en sjabloonbestanden. Er wordt ook een HEAD
-bestand aangemaakt, dat verwijst naar de commit die momenteel is uitgecheckt.
Afgezien van de .git
-map in de hoofdmap van het project, blijft een bestaand project ongewijzigd (Git vereist, in tegenstelling tot SVN, geen .git
-submap in elke submap).
git init
initialiseert standaard de Git-configuratie naar het pad vna de .git
-submap. Het pad naar de submap kan worden gewijzigd en aangepast als je het ergens anders wilt hebben. Je kunt de omgevingsvariabele $GIT_DIR
instellen op een aangepast pad. git init
initialiseert de Git-configuratiebestanden dan daar. Daarnaast kun je het argument --separate-git-dir
doorgeven voor hetzelfde resultaat. Vaak wordt een afzonderlijke .git
-submap gebruikt om de 'dotfiles' (.bashrc
, .vimrc
, enz.) van je systeemconfiguratie in de standaardmap te bewaren, terwijl de map .git
-map zich ergens anders bevindt.
gerelateerd materiaal
Git-branch
Oplossing bekijken
Git leren met Bitbucket Cloud
Gebruik
Vergeleken met SVN is de git init
-opdracht een enorm eenvoudige manier om nieuwe projecten met versiebeheer aan te maken. Je hoeft bij Git geen repository aan te maken, bestanden te importeren en een werkexemplaar uit te checken. Bovendien vereist Git geen reeds bestaande server- of beheerdersrechten. Je hoeft alleen maar naar de submap van je project te gaan en git init
uit te voeren, en je hebt een volledig functionele Git-repository.
git init
Transformeer de huidige map in een Git-repository. Er wordt dan een .git
-submap toegevoegd aan de huidige map en je kunt beginnen met het opnemen van revisies van het project.
git init <directory>
Maak een lege Git-repository aan in de opgegeven map. Als je deze opdracht uitvoert, wordt er een nieuwe submap aangemaakt met de naam
Als je git init
al in een projectmap hebt uitgevoerd en deze een .git
-submap bevat, kun je git init
probleemloos opnieuw uitvoeren in dezelfde projectdirectory. Een bestaande .git
-configuratie wordt niet overschreven.
git init versus git clone
Een korte opmerking: git init
en git clone
kunnen gemakkelijk met elkaar worden verward. Ze kunnen grofweg allebei worden gebruikt om een 'nieuwe git-repository te initialiseren'. git clone
is echter afhankelijk van git init
. git clone
wordt gebruikt om een kopie te maken van een bestaande repository. Intern roept git clone
eerst git init
aan om een nieuwe repository aan te maken. Vervolgens worden de gegevens uit de bestaande repository gekopieerd en wordt er een nieuwe set werkbestanden uitgecheckt. Meer informatie vind je op de pagina over git clone.
Lege repository's --- git init --bare
git init --bare <directory>
Initialiseer een lege Git-repository, maar laat de werkmap weg. Gedeelde repository's moeten altijd worden aangemaakt met de markering --bare
(zie de discussie hieronder). Gewoonlijk eindigen repository's die met de markering --bare
zijn geïnitialiseerd op .git
. De 'lege versie' van een repository genaamd my-project
moet bijvoorbeeld worden opgeslagen in een map met de naam my-project.git
.
De markering --bare
maakt een repository zonder werkmap, waardoor het onmogelijk is om bestanden te bewerken en wijzigingen te committen in die repository. Je maakt een lege repository aan om git-push- en git-pull-opdrachten uit te voeren, maar maakt nooit rechtstreeks commits naar deze repository. Centrale repository's moeten altijd als lege repository worden aangemaakt. Immers, als branches naar een niet-lege repository worden gestuurd, bestaat de kans dat wijzigingen worden overschreven. Zie --bare
als een manier om een repository te markeren als een opslagplaats, in plaats van als een ontwikkelomgeving. Dit betekent dat de centrale repository voor vrijwel alle Git-workflows leeg is en dat de lokale repository's van ontwikkelaars niet toegankelijk zijn.
git init --bare
wordt het meest gebruikt om een centrale repository op afstand aan te maken:
ssh <user>@<host> cd path/above/repo git init --bare my-project.git
Eerst ga je via SSH naar de server waar je centrale repository moet komen. Navigeer vervolgens naar de locatie waar je het project wilt opslaan. Gebruik ten slotte de markering --bare
om een centrale repository voor opslag aan te maken. Ontwikkelaars klonen vervolgens my-project.git
om een lokale kopie te maken in hun ontwikkelingsomgeving.
git init-sjablonen
git init <directory> --template=<template_directory>
Initialiseert een nieuwe Git-repository en kopieert bestanden van de <template_directory>
naar de repository.
Met sjablonen kun je een nieuwe repository initialiseren met een vooraf gedefinieerde .git
-submap. Je kunt een sjabloon zo configureren dat deze standaardmappen en -bestanden bevat die naar de .git
-submap van een nieuwe repository worden gekopieerd. De standaard Git-sjablonen bevinden zich gewoonlijk in een map `/usr/share/git-core/templates`
, maar deze map kan ook in een ander pad op je computer staan.
De standaardsjablonen zijn een goede referentie en een goed voorbeeld van hoe je sjabloonfuncties kunt gebruiken. Een van de krachtige functies van sjablonen (en die aanwezig is in de standaardsjablonen) is de Git Hook-configuratie. Je kunt een sjabloon aanmaken met vooraf gedefinieerde Git-hooks en je nieuwe git-repository's direct initialiseren met veelvoorkomende hooks. Meer informatie over Git Hooks vind je op de Git Hook-pagina.
Configuratie
git init <directory> --template=<template_directory>
Voor alle configuraties van git init
is een <directory>
-argument nodig. Als je de
opgeeft, wordt de opdracht erin uitgevoerd. Als deze map niet bestaat, wordt hij aangemaakt. Naast de opties en configuratie die al zijn besproken, heeft Git init
nog enkele andere opdrachtregelopties. Hieronder volgt een volledige lijst:
-Q
--QUIET
Geeft alleen berichten, fouten en waarschuwingen met een 'kritiek niveau' weer. Alle andere uitvoer wordt gedempt.
--BARE
Maakt een lege repository aan. (Raadpleeg het kopje 'Lege repository's' hierboven.)
--TEMPLATE=
Geeft de map op waaruit de sjablonen worden gebruikt. (Raadpleeg het kopje 'Git Init-sjablonen' hierboven.)
--SEPARATE-GIT-DIR=
Maakt een tekstbestand aan dat het pad naar
bevat. Dit bestand fungeert als een koppeling naar de .git
-map. Dit is handig als je je .git
-map op een andere locatie of schijf wilt opslaan dan de werkbestanden van je project. Enkele veelvoorkomende gebruiksscenario's voor --separate-git-dir
zijn:
- Om je systeemconfiguratie met 'dotfiles' (
.bashrc, .vimrc
, enz.) te behouden in de homedirectory met behoud van de.git
-map elders - Je Git-geschiedenis is erg omvangrijk geworden en je moet die verplaatsen naar een aparte schijf met hoge capaciteit
- Je wilt een Git-project in een openbaar toegankelijke directory zoals
`www:root`
Je kunt git init --separate-git-dir
aanroepen in een bestaande repository. De .git dir
wordt dan verplaatst naar het opgegeven
-pad.
--SHARED[=(FALSE|TRUE|UMASK|GROUP|ALL|WORLD|EVERYBODY|0XXX)]
Stel toegangsrechten in voor de nieuwe repository. Hiermee bepaal je welke gebruikers en groepen met rechten op UNIX-niveau push- en pull-opdrachten naar de repository mogen uitvoeren.
Voorbeelden
Een nieuwe git-repository aanmaken voor een bestaande codebasis
cd /path/to/code \
git init \
git add . \
git commit
Een nieuwe lege repository aanmaken
git init --bare /path/to/repo.git
Een git init-sjabloon aanmaken en een nieuwe git-repository initialiseren op basis van de sjabloon
mkdir -p /path/to/template \
echo "Hello World" >> /absolute/path/to/template/README \
git init /new/repo/path --template=/absolute/path/to/template \
cd /new/repo/path \
cat /new/repo/path/README
Deel dit artikel
Volgend onderwerp
Aanbevolen artikelen
Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.