git ready

leer git een commit per keer
by Nick Quaranto

de staging ruimte

Toegevoegd op 18 Jan 2009

Een van de meest essentiƫle concepten van Git is de staging area. Zijn gebruik kan je manier van werken op een fundamentele manier veranderen, verbeteren! Laten we kijken hoe het precies werkt en wat je moet weten om het te gebruiken.

Met de meeste andere versie beheer systemen zijn er 2 plaatsen voor het opslaan van je data: je werk kopie (de folders/bestanden die je op dit moment gebruikt) en de data opslag (waar het versie beheer systeem besluit je wijziging te verpakken en op te slaan). In Git is er een derde optie: de staging area of (index). Het is in zekere zin het laadperron waar je kunt bepalen welke wijzigingen worden verzonden.

Omdat de werk folder en wat wordt opgeslagen door Git los van elkaar zijn, heeft de ontwikkelaar de vrijheid zijn commit op te bouwen hoe hij dat wil, en niet op de manier waarop het versie beheer systeem het je verteld. Omdat er een laag zit tussen wanneer Git daadwerkelijk je data opslaat en het maken van je wijzigingen, krijg je veel meer flexibiliteit en controle.

Het gebruiken van de index is eenvoudig met de git add en git commit commando’s. Je add bestanden aan de index, en wanneer je tevreden bent commit je de wijzigingen:

Wanneer ze in het repository zitten kun je ze push-en naar remote (=verre) locaties, ze mergen naar andere branches, en nog veel meer. Er zijn ook acties die je op de index zelf kunt uitvoeren, zoals tijdelijk je wijzigingen parkeren.

Laten we door een eenvoudig voorbeeld van het gebruik van de index lopen. Ik heb zojuist wat wijzigingen gedaan:

$ git status
  On branch master
  Changed but not updated:
    (use "git add <file>..." to update what will be committed)
 
      modified:   README.md
      modified:   about.html
 
  Untracked files:
    (use "git add <file>..." to include in what will be committed)
 
      help.txt
  no changes added to commit (use "git add" and/or "git commit -a")

In dit voorbeeld zijn er 2 bestanden waar Git weet van heeft, en een onbekend bestand: help.txt. Wanneer we git add . uitvoeren, zullen alle bestanden die gewijzigd zijn en alle nieuwe bestanden die nog niet bekend zijn bij Git aan de index worden toegevoegd. Het add commando slaat de data niet op, het plaatst ze slechts op het laadperron, klaar om door de git commit vrachtwagen te worden meegenomen.

$ git add .
$ git status
  On branch master
  Changes to be committed:
    (use "git reset HEAD <file>..." to unstage)
 
      modified:   README.md
      modified:   about.html
      new file:   help.txt

Zoals de prompt zegt, je kunt git reset HEAD <bestand> gebruiken om je bestanden uit de index te verwijderen. Op deze manier kun je precies wat je wil commit-en. Je kunt ook specifieke regels uit je bestand commit-en mocht je dat echt willen Wanneer je je afvraagt hoe je wijzigingen ongedaan kunt maken, daar is zelfs ook een hele tip aan gewijd. Vanaf hier, zal een git commit alle bestanden naar de data opslag van Git verplaatsen, en je zit gebakken!

$ git commit -m "Adding stuff"
  Created commit e793200: Adding stuff
   2 files changed, 3 insertions(+), 0 deletions(-)
   create mode 100644 help.txt

Wanneer je op zoek bent naar meer informatie over de index, bekijk dan deze fantastische posts:

  1. The Thing About Git
  2. Git Book – The Git Index

Als je nog andere bronnen kent die de index uitleggen, laat het ons weten in het commentaar!