# Basisbegrippen

{% hint style="success" %}
[Kennisclip](https://ap.cloud.panopto.eu/Panopto/Pages/Viewer.aspx?id=43ced464-39c8-406a-877f-ad98009a63a6)
{% endhint %}

## Wat bedoelen we met "fasen van data"?

Om Git goed te gebruiken, moet je goed beseffen op welke manier de tijdlijn voor ons project wordt opgebouwd. We noteren namelijk niet elke wijziging meteen op de tijdlijn - het zou bijvoorbeeld heel onoverzichtelijk zijn een nieuwe wijziging te noteren elke keer we een bestand opslaan. In plaats daarvan maken we voor elke gebeurtenis op de tijdlijn een soort "kladversie in potlood" en pas wanneer we tevreden zijn, zetten we de gebeurtenis "in pen" in op de tijdlijn. Je kan de tijdlijn dus zien als een gedetailleerd **logboek** van alle belangrijke aanpassingen die ooit gebeurd zijn in je project. We bekijken dit met een voorbeeld. We hebben code voor een website en we willen daaraan een "reset password" knop toevoegen. Welke stappen doorlopen we daarvoor? Onderstaande figuur toont ze alle vier, daarna volgt een uitleg van wat elke stap precies voorstelt.

### Oorspronkelijke tijdlijn

We hebben al code waaraan we deze nieuwe functionaliteit willen toevoegen. Ons beginpunt is dus een tijdlijn die al bestaat.

![Op 18 augustus hebben er "recente aanpassingen" plaatsgevonden](https://928709746-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MZIhKZ6Ck1vMhslimJ4%2F-Mif-NJgtJp1NFBEKwa8%2F-Mif-ksnI_R534cqZXuP%2FScreenshot%20from%202021-09-03%2011-34-56.png?alt=media\&token=af9cf31a-a6b1-4658-b680-5a21be5e32f7)

### Eerste wijziging in potlood

Code om een wachtwoord te resetten staat normaal echter niet op dezelfde plaats als code voor de user interface. We doen eerst een eerste wijziging en voegen die "in potlood" toe aan ons klad.

![Bestaande tijdlijn met daarnaast nieuw klad in potlood](https://928709746-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MZIhKZ6Ck1vMhslimJ4%2F-Mif-NJgtJp1NFBEKwa8%2F-Mif-ybej9MkKP0Fw_o8%2FScreenshot%20from%202021-09-03%2011-35-52.png?alt=media\&token=1625e3a0-4e4b-4b1b-bbda-ab730375b657)

### Alle wijzigingen staan samen in potlood

De volgende wijziging, die iets aanpast in de database, voegen we ook toe aan ons logboek.

![](https://928709746-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MZIhKZ6Ck1vMhslimJ4%2F-Mif-NJgtJp1NFBEKwa8%2F-Mif0R5WMOIzFBiNmYN9%2FScreenshot%20from%202021-09-03%2011-37-48.png?alt=media\&token=8fd14962-f72d-4226-b2ea-11e7b5c02284)

### Uitgebreide tijdlijn

Wanneer we tevreden zijn van onze kladversie, zetten we ze om naar een gebeurtenis op de tijdlijn.

![](https://928709746-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MZIhKZ6Ck1vMhslimJ4%2F-Mif-NJgtJp1NFBEKwa8%2F-Mif0hGWbq-_wSj0yBZM%2FScreenshot%20from%202021-09-03%2011-39-03.png?alt=media\&token=dcde4f75-56a7-4612-9b2b-d9f9dda8b79a)

Het verschil tussen “niet genoteerd in het logboek”, “genoteerd in potlood” en “genoteerd in pen” bestaat ook in Git, maar wordt wat anders uitgedrukt.

## Overzichtsfiguur

Volgende figuur vertelt je de essentie van lokaal werken met Git. We raden aan dat je ze afdrukt, plastificeert en altijd in je laptoptas steekt:

![De essentie van lokaal werken met Git](https://928709746-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MZIhKZ6Ck1vMhslimJ4%2F-Mif-NJgtJp1NFBEKwa8%2F-Mif1L1MeJAhf_xmAqA0%2Flifecycle.png?alt=media\&token=5e592deb-6dc9-46ef-a4a5-7fba5b49076b)

De figuur is uiterst nuttig, maar het is wel een vereenvoudiging. In het bijzonder de pijl "remove the file" verdient meer uitleg. Die komt aan bod bij de bespreking van [git rm](https://apwt.gitbook.io/leerlijn-git/lokaal-werken/git-rm). Je mag hem voorlopig negeren.

{% hint style="warning" %}
Onderstaande uitleg moet je **door en door** begrijpen. Ook de termen zijn belangrijk. Wij spreken over "potlood" en "pen" om alles wat tastbaarder te maken, maar op de werkvloer doet men dat niet.
{% endhint %}

De toestanden kan je samenvatten als volgt:

* untracked: files met deze toestand staan wel in de **working directory**, dat wil zeggen in je bestandenstructuur beschouwd als gewone map en niet als Git repository, maar ze staan niet op de tijdlijn en niet in je kladwerk.
* staged: we hebben er iets over genoteerd in de **staging area**, dat wil zeggen "in potlood", maar moeten dat nog omzetten naar "pen" voor het op de tijdlijn komt. Er kan ook al oudere informatie op de tijdlijn staan.
* unmodified: alles staat in de **project history**, dat wil zeggen "op de tijdlijn". Anders gezegd, er is niets veranderd aan de file sinds er de laatste keer iets "in pen" over is genoteerd.
* modified: komt voor in de project history, maar bevat wijzigingen die nog niet terug te vinden zijn op de tijdlijn of in de staging area

## Voorbeeld

In de kennisclip wordt getoond hoe files van de ene toestand overgaan in de andere.
