Close

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 versus git 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.

Git-branch
gerelateerd materiaal

Git-branch

Logo Bitbucket
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 .git submap.

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.

Bare repository's

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.

Mensen die samenwerken met een muur vol tools

Bitbucket-blog

Toelichting DevOps

DevOps-leertraject

Demo Den Feature-demo's met Atlassian-experts

Hoe Bitbucket Cloud werkt met Atlassian Open DevOps

Meld je aan voor onze DevOps-nieuwsbrief

Thank you for signing up