0%

Hoofdstuk 5

Branches

Waar een branch naar wijst

Je hebt een kleine buurtgids geopend die al twee commits heeft. De repository staat klaar en de terminal staat er al in. Deze les begint met die ongewijzigde repository. Je hoeft dus niet eerst bestanden te maken of een andere les uit het hoofdstuk Branches af te ronden.

Een branch is een verplaatsbare naam

Elke commit heeft een lange identificatiecode, maar mensen hebben een bruikbare naam nodig voor de nieuwste commit op een werklijn. Een branch is die naam. Hij wijst naar één commit. Git kan de verwijzingen naar oudercommits terugvolgen door de eerdere geschiedenis. Als je git reset al in het vorige hoofdstuk hebt gezien: dit is de naam die daarbij werd verplaatst.

Wanneer je nog een commit op een branch maakt, schuift Git de branchnaam naar die nieuwe commit. Git kopieert het project niet naar een andere map. De commits en bestanden blijven in één repository. De branch is een kleine verplaatsbare wijzer binnen die repository.

Het diagram laat alvast zien wat er gebeurt nadat twee branchnamen naar verschillende commits zijn verplaatst. De ongewijzigde repository hieronder is nog niet vertakt: beide namen wijzen nog naar dezelfde nieuwste commit. In de afbeelding wijst MAIN naar commit 3 en FEATURE naar commit 4. De lijnen delen commits 1 en 2 en lopen daarna uiteen. BRANCHES MOVE / THE COMMITS STAY betekent: branches bewegen, de commits blijven staan.

Een hoofdlijn loopt door tot commit 3, terwijl een featurebranch bij commit 2 aftakt en commit 4 bereikt. De labels MAIN en FEATURE wijzen naar commits: branches bewegen, commits blijven staan.

De voorbereide repository heeft twee branchnamen: main en clearer-title. Beide wijzen nu naar dezelfde nieuwste commit. Zo ziet dat eruit met de nieuwste commit bovenaan, zoals git log ze toont, en elke branchnaam naast de commit waarnaar hij wijst:

Clarify the guide title       <- main, clearer-title
        |
Start the neighborhood guide

De verticale lijn betekent: “de commit hieronder is de oudercommit van de commit erboven”. Deze repository heeft twee commits en twee namen. Beide namen zijn labels op dezelfde commit. Dit is één geschiedenis en één werkboom, geen twee kopieën van de gids.

Bekijk de branchnamen

De opdracht git branch zonder toevoegingen toont de lokale branches van de repository. Zonder opties en extra woorden leest ze alleen de namen. Ze maakt niets aan, schakelt niet over en verwijdert niets.

Voer haar nu uit:

git branch

Git toont clearer-title en main. Eén regel begint met *. Dat sterretje markeert de branch waarop je nu zit. In de ongewijzigde beginsituatie is dat main.

Git houdt ook een speciale markering bij met de naam HEAD, in hoofdletters. HEAD betekent “waar ik nu ben”. Tijdens gewoon werk met branches wijst HEAD naar de huidige branch en die branch naar de huidige commit. Hier wijst HEAD naar main en wijst main naar Clarify the guide title.

Clarify the guide title       <- main (HEAD), clearer-title
        |
Start the neighborhood guide

Je hoeft HEAD nog niet te typen. Het verklaart hoe Git weet welke branch moet opschuiven wanneer je je volgende commit maakt.

Wat maak je normaal gesproken aan als je nog een Git-branch maakt?

git branch zonder opties toont een sterretje naast main. Wat vertelt dat sterretje?

Hierna maak je bij dezelfde commit een derde branch en schakel je ernaartoe over, met één opdracht.