Werken met remotes in Git

Werken met remotes in Git

7 februari 2025
Erwin Matijsen
Geplaatst in Tutorial
Onderdeel van Werken met Git


In de voorgaande twee tutorials over Werken met git heb je de basis geleerd van het bijhouden van wijzigingen en het werken in branches. Tot dusver heb je lokaal op je eigen computer gewerkt. En alleen al voor die situatie is Git erg handig, omdat je met een gerust hart in branches kunt experimenteren. Pakt het toch niet goed uit, dan ga je simpelweg terug naar je hoofdlijn en begin je opnieuw.

Maar Git is ook een krachtig hulpmiddel als je met meerdere personen aan een project werkt.

Iedereen een eigen kopie

Kenmerkend voor Git is, is dat iedereen in een eigen kopie van het project werkt. In voorgaande paragraaf heb je een project gemaakt, en daar een repository aangemaakt. Werk je met meerder personen samen, dan zal er ook een project zijn met een repository, die ergens centraal staat. Ga jij nu werken aan dit project, dan haal je een kopie op van de repository waarin je gaat werken. Dit betekent dat je de complete geschiedenis en alle branches tot je beschikking hebt.

Je kunt nu lokaal werken aan het project, waarschijnlijk in een eigen branch. Ben je klaar, dan kun je alle wijzigingen naar de centrale repository sturen (pushen), zodat die weer up-to-date is met jouw wijzigingen. Alle collega's kunnen vervolgens alle wijzigingen weer naar hun eigen lokale repository halen (pullen), en hebben zo ook jouw wijzigingen beschikbaar.

Op deze manier kan iedereen lokaal - offline zelfs - werken, en toch de laatste status van het project beschikbaar hebben.

Samenwerken met een VCS

Github

Om op deze manier te werken heb je wel een plaats nodig om een centrale repository te beheren. In de rest van deze paragraaf zijn de voorbeelden met Github, één van de grotere spelers op dit gebied. Wil je meedoen met de voorbeelden, dan is het leuk om ook een eigen account aan te maken. Zie daarvoor de volgende link: Een account aanmaken op Github

Daarnaast moet je kunnen communiceren met Github zonder steeds te hoeven inloggen. Installeer daarom Git Credential Manager (GCM) en stel Git in om dat te gebruiken. GCM installeren

In je terminal voer je vervolgens dit uit:

git config --global credential.helper cache
git-credential-manager configure

Als je nu de eerste keer met een remote werkt (zie hierna), dan zal GCM je vragen om in je Github-account in te loggen via de browser. Je gegevens worden veilig opgeslagen, en vanaf nu kun je zonder steeds in te loggen communiceren met Github.

Je kunt ook op andere manieren communiceren met Github. Een veelgebruikte manier is via SSH. Zie daarvoor de documentatie van Github.

Een repository maken

Maak nu eerst een repository aan op Github. Ga vanaf het beginscherm van Github naar Repositories en klik rechtsbovenin op de groene knop New. Je kunt ook direct naar de volgende link gaan: Nieuwe repository maken

Vul de gegevens in zoals op onderstaande afbeelding:

Maak een repository aan

Je mag de repository ook op private zetten, dan kan alleen jij erbij.

Remote toevoegen

In het volgende scherm kopieer je nu de URL van de repository. Let erop dat je de HTTPS-versie gebruikt:

Kopieer de URL van de repository

Werk je met SSH, gebruik dan de SSH-url!

In je terminal in je project voeg je deze URL vervolgens toe met het git remote add commando. Hiermee voeg je een remote toe, ofwel een verwijzing naar de repository die je zojuist hebt aangemaakt. Deze remote geef je een naam. Het is vrij gebruikelijk deze origin te noemen, om aan te duiden dat het de centrale repository betreft.

Voeg een remote toe

Wijzigingen opsturen

Vervolgens kun je een branch naar de centrale repository sturen. Dit doe je met git push <remote-naam> <branch-naam>. Voeg -u toe om later wijzigingen eenvoudiger naar je toe te kunnen halen.

Stuur main naar origin

Ga nu naar het project op Github, ververs de pagina en je zult (ongeveer) het volgende zien:

Je wijzigingen zijn nu beschikbaar in origin

Maak nu eens een wijziging in README.md, voeg dit toe aan een commit en bekijk dan git status.

Git status

Je ziet "Your branch is ahead of 'origin/main' by 1 commit.", ofwel: Git weet nu dat je één extra commit hebt ten opzichte van de main branch in de origin repository. Met git push kun je deze commit weer naar origin sturen.

Wijzigingen ophalen

Na het pushen naar de centrale repository zijn alle wijzigingen beschikbaar voor iedereen die met de repository werkt. Om de veranderingen op te halen, moeten deze eerst wel binnengehaald worden. Dit kan op twee manieren. Om dit te ervaren, kun je via Github eerst zelf een wijziging aanbrengen, zodat je deze verandering naar je computer kunt halen. Klik hiervoor in Github op de startpagina van je repository op het potloodje om README.md te wijzigen.

Wijzig README.md

Vervolgens kun je een wijziging aanbrengen en dan op de groen knop Commit changes klikken. Klik in het vervolgscherm weer op de groene knop.

Wijzig README.md

Er zijn nu wijzigingen aangebracht in de centrale repository. Dit heb je zelf gedaan, maar het had net zo goed een collega kunnen zijn die veranderingen van haar repository naar origin heeft gestuurd. In beide gevallen geldt nu: jij hebt de wijzigingen nog niet op je computer. Zoals gezegd kan dat op twee manieren.

Met git fetch haal je op wat er veranderd is, maar verandert er niets aan je werkomgeving. Je lokale omgeving is zo weer op de hoogte van de status van origin. Om de veranderingen ook in je eigen omgeving te voegen, voer je zelf git merge uit. Dit kan met git merge main origin/main, waarmee je zegt dat je de veranderingen van de origin/main branch in je eigen main branch wilt voegen. Omdat je al op main werkt, kun je ook simpelweg git merge opgeven, Git zal dan automatisch de branch met dezelfde naam van origin mergen.

git fetch en git merge

Met git fetch weet je wat er veranderd is, maar voeg je de veranderingen zelf samen. Dit is een veilige manier van werken, omdat er niets in jouw werkomgeving veranderd zonder dat jij dat wilt.

Met de tweede manier - git pull - is dit niet het geval. Met git pull voer je eigenlijk git fetch en git merge in één stap uit.

git pull: git fetch en git merge ineen

Klonen

Een laatste commando om te leren is git clone. Tot nu toe heb je in een repository gewerkt die je zelf hebt gemaakt. Het was al aanwezig op je computer, vervolgens heb je een centrale repository gemaakt en deze twee gekoppeld.

Als er echter al een centrale repository is, dan kun je git clone gebruiken om deze naar je eigen computer te halen. Er wordt dan automatisch een remote ingesteld met de naam origin, iets dat je nu handmatig hebt gedaan.

Je kunt je project op je laptop weggooien (nadat je alles naar origin hebt gestuurd!) en met git clone het project opnieuw binnenhalen.

Haal eerst in Github weer de URL op. Ga naar de hoofdpagina van je repository en klik op de groene knop code. Selecteer vervolgens HTTPS en kopieer de URL.

URL van je repository ophalen

Vervolgens ga je naar de map waarin je het project wilt klonen en voer je git clone uit.

git clone

Zoals je ziet, is het README.md bestand nu aanwezig. Voer ook maar eens git remote uit en zie dat er een remote is met de naam origin.

Conclusie

Je hebt in deze reeks de basis geleerd van het werken met Git. Ga je met een ander VCS aan de slag, dan zal de manier van werken soortgelijk zijn, alhoewel de commando's anders zullen zijn. Wat je in deze reeks hebt gezien is het topje van de ijsberg van wat Git is en kan. Het is voldoende om aan de slag te gaan, zeker in je eigen projecten. Kom je in een team te werken dat met Git werkt, dan begrijp je de basis. Van hen zul je leren wat hun manier van werken met Git is.

Wil je meer leren, dan is het aan te raden het boek op de website van Git te lezen. Het is zowel in het Engels als het Nederlands beschikbaar. Online kun je het gratis lezen, daarnaast is het ook te koop als je liever uit een boek leest. Op de website kun je ook een PDF of epub versie downloaden (gratis).

Verder heb je Github gebruikt om een centrale repository aan te maken. Maar Github is veel meer dan alleen een opslagplaats. Je kunt er in samenwerken aan projecten, bugs rapporteren, wiki's aanmaken en nog veel meer. Het loont de moeite om eens rond te kijken naar openbare projecten op Github, er zijn talloze open source projecten te vinden. Bekijk bijvoorbeeld de broncode en het project van Python.

Github is zeker niet de enige plaats om centrale repositories aan te maken. Alternatieven zijn bijvoorbeeld Gitlab en BitBucket.

Over de auteur


Erwin Matijsen

Erwin Matijsen

Erwin is de oprichter van python-cursus.nl. In allerlei rollen heeft hij Python ingezet, van het eenvoudiger maken van zijn werk tot het opleveren van complete (web)applicaties. Met vrouw en kinderen woont hij in Havelte (Drenthe), midden in de prachtige natuur. Daar wandelt hij graag, zeker ook omdat de beste ingevingen tijdens een wandeling - weg van de computer - lijken te komen.


Contact

Vragen, opmerkingen?

Heb je vragen, opmerkingen, suggesties of tips naar aanleiding van deze blog? Neem dan contact met ons op, of laat het weten via Mastodon of LinkedIN.