0%

Remotes, zonder server · oefening

Main pushen en zijn upstream instellen

De bare repository origin.git bestaat, maar heeft nog geen commits of branches. Een push verstuurt commits en werkt een ref in een andere repository bij. Je pusht de branch main van garden en legt vast met welke remotebranch die normaal uitwisselt.

Lees de push-opdracht

git push verstuurt geschiedenis en een ref naar een remote. In git push -u origin main kiest origin de opgeslagen remote en main de te versturen branch. De optie -u is kort voor --set-upstream: nadat de push slaagt, legt die main van origin vast als de upstream van de lokale main.

Een upstream is de standaardrelatie met een remotebranch voor een lokale branch. Zodra de lokale main de main van origin volgt, kun je latere pushes vanuit main met alleen git push doen en kan git status de twee posities vergelijken.

Voer de eerste push uit:

git push -u origin main

Git maakt main in origin.git. Het maakt of vernieuwt ook origin/main binnen garden. Die schuine streep betekent geen map: origin/main is een remote-tracking ref, de lokale registratie van de remotebranchpositie die je repository het laatst heeft gezien.

Lees de twee posities

Je weet al dat git log de commitgeschiedenis leest. Door er een ref achter te zetten vraag je Git om bij die ref te beginnen in plaats van bij de huidige branch. Lees de lokale main en daarna de lokale registratie met de naam origin/main:

git log main
git log origin/main
git status

Beide logs beginnen nu bij dezelfde commit en git status meldt dat de lokale main gelijkloopt met origin/main. Het zijn twee refs die na deze push toevallig overeenkomen, niet één gedeelde verwijzing.

Wat voegde -u toe aan de geslaagde eerste push?

In die ene opdracht gebeurden twee aparte dingen, en het is de moeite waard om ze uit elkaar te halen. Je commits werden naar de bare repository gekopieerd en er werd een relatie vastgelegd zodat je de remote en branch niet meer hoeft te noemen. Het eerste is het werk. Het tweede is het gemak, en daarom is vanaf nu alleen git push voldoende.