Close

Git Checkout

Op deze pagina wordt ingegaan op de opdracht git checkout. Er wordt ingegaan op gebruiksvoorbeelden en randscenario's. Een 'checkout' betekent in Git de omschakeling tussen verschillende versies van een doelentiteit. De opdracht git checkout werkt op drie verschillende entiteiten: bestanden, commits en branches. Naast de definitie voor 'checkout' wordt vaak de uitdrukking 'uitchecken' gebruikt; deze verwijst naar de uitvoering van de opdracht git checkout. In het onderwerp Wijzigingen ongedaan maken zagen we hoe git checkout kan worden gebruikt om oude commits te bekijken. In dit document ligt vooral de nadruk op checkout-bewerkingen voor branches.

Het uitchecken van branches is vergelijkbaar met het uitchecken van oude commits en bestanden, in die zin dat de werkmap wordt bijgewerkt om overeen te komen met de geselecteerde branch/revisie; nieuwe wijzigingen worden echter opgeslagen in de projectgeschiedenis – dat wil zeggen dat het geen alleen-lezenbewerking is.


Branches uitchecken


Met de opdracht git checkout kun je navigeren tussen de branches die zijn gemaakt door git branch. Bij het uitchecken van een branch worden de bestanden in de werkmap bijgewerkt, zodat ze overeenkomen met de versie die in die branch is opgeslagen. Ook wordt Git geïnformeerd dat alle nieuwe commits voor die branch moeten worden opgenomen. Zie het als een manier om te selecteren aan welke ontwikkelingslijn je werkt.

De beschikking over een speciale branch voor elke nieuwe functie is een ingrijpende wijziging ten opzichte van een traditionele SVN-workflow. Hierdoor is het ongekend eenvoudig om nieuwe experimenten uit te proberen zonder bang te hoeven zijn dat bestaande functionaliteit wordt vernietigd. Ook is het hierdoor mogelijk om tegelijkertijd aan veel niet-gerelateerde functies te werken. Daarnaast ondersteunen branches verschillende samenwerkingsworkflows.

De opdracht git checkout kan af en toe worden verward met git clone. Het verschil tussen de twee opdrachten is dat 'clone' code ophaalt uit een externe repository, terwjil 'checkout' schakelt tussen versies van code die al op het lokale systeem staan.

Consolevenster
gerelateerd materiaal

Uitgebreid Git log

Logo Bitbucket
Oplossing bekijken

Git leren met Bitbucket Cloud

Gebruik: Bestaande branches


Ervan uitgaande dat de repo waarin je werkt reeds bestaande branches bevat, kun je schakelen tussen deze branches met behulp van git checkout. Voer git branch uit om erachter te komen welke branches beschikbaar zijn en wat de huidige branchnaam is.

$> git branch 
main 
another_branch 
feature_inprogress_branch 
$> git checkout feature_inprogress_branch

Het bovenstaande voorbeeld laat zien hoe je een lijst met beschikbare branches kunt bekijken door de opdracht git branch uit te voeren en over te schakelen naar een opgegeven branch (in dit geval feature_inprogress_branch).

Nieuwe branches


Git checkout werkt samen met git branch. De opdracht git branch kan worden gebruikt om een nieuwe branch aan te maken. Wanneer je een nieuwe functie wilt starten, maak je een nieuwe branch aan van main met behulp van git branch new_branch. Eenmaal aangemaakt kun je git checkout new_branch gebruiken om naar die branch te gaan. Bovendien accepteert de opdracht git checkout een -b-argument dat fungeert als een eenvoudige methode die de nieuwe branch aanmaakt en er onmiddellijk naar overschakelt. Je kunt aan meerdere functies in één repository werken door ertussen te schakelen met git checkout.

git checkout -b <new-branch>

Het bovenstaande voorbeeld maakt en controleert tegelijkertijd . De optie -b is een handige markering die Git vertelt om git branch uit te voeren voordat git checkout wordt uitgevoerd.

git checkout -b <new-branch> <existing-branch>

Standaard baseert git checkout -b de new-branch op de huidige HEAD. Er kan een optionele aanvullende branchparameter worden doorgegeven aan git checkout. In het bovenstaande voorbeeld wordt existing-branch > doorgegeven, die vervolgens new-branch baseert op existing-branch in plaats van op de huidige HEAD.

Wisselen van branch


Het wisselen van branch is heel eenvoudig. Door het volgende uit te voeren, wordt HEAD verwezen naar de tip van de .

git checkout <branchname>

Git houdt een geschiedenis van checkout-bewerkingen bij in de reflog. Je kunt git reflog uitvoeren om de geschiedenis te bekijken.

Git-checkout voor een externe branch


Wanneer je met een team samenwerkt, is het gebruikelijk om externe repositories te gebruiken. Deze repositories kunnen worden gehost en gedeeld of kunnen de lokale kopie van een collega zijn. Elke externe repository bevat zijn eigen set branches. Om een remote branch te kunnen uitchecken, moet je eerst de inhoud van de branch ophalen.

git fetch --all

In moderne versies van Git kun je de externe branch uitchecken als een lokale branch.

git checkout <remotebranch>

Oudere versies van Git vereisen dat er een nieuwe branch wordt gemaakt op basis van de externe.

git checkout -b <remotebranch> origin/<remotebranch>

Daarnaast kun je een nieuwe lokale branch uitchecken en deze terugzetten naar de laatste commit van de externe branch.

git checkout -b <branchname>
git reset --hard origin/<branchname>

Vrijstaande HEADS


Nu we de drie belangrijkste toepassingen van git checkout op branches hebben gezien, is het belangrijk om de status 'vrijstaande HEAD' te bespreken. De HEAD is Gits manier is om naar de huidige momentopname te verwijzen. Onder de motorkap werkt de opdracht git checkout eenvoudig de HEAD bij, zodat deze naar de opgegeven branch of commit verwijst. Als er naar een branch wordt verwezen, is dat geen probleem voor Git, maar als je een commit uitcheckt, wordt er overgeschakeld naar de status vrijstaande HEAD.

Dit is een waarschuwing om je te laten weten dat alles wat je doet 'los' staat van de rest van de ontwikkeling van je project. Als je zou beginnen met het ontwikkelen van een functie terwijl de HEAD vrijstaat, is er geen enkele branch die je toestaat om terug te komen. Wanneer je onvermijdelijk een andere branch uitcheckt (bijvoorbeeld om je functie in te voegen), zou er geen manier zijn om naar je functie te verwijzen:

Gekoppelde kop versus losstaande kop

Het punt is dat je ontwikkeling altijd moet plaatsvinden op een branch — nooit op een vrijstaande HEAD. Dit zorgt ervoor dat je altijd een verwijzing hebt naar je nieuwe commits. Als je echter alleen maar naar een oude commit kijkt, maakt het niet echt uit of je in een vrijstaande HEAD hebt of niet.

Samenvatting


Op deze pagina ging het over het gebruik van de opdracht git checkout bij het wijzigen van branches. Samenvattend verandert git checkout het doel van de ref HEAD wanneer de opdracht wordt gebruikt voor branches. Het kan worden gebruikt om branches aan te maken, van branch te wisselen en externe branches uit te checken. De opdracht git checkout is een essentieel hulpmiddel voor het gewone gebruik van Git. De opdracht is een tegenhanger van git merge. De opdrachten git checkout en git merge zijn cruciale hulpmiddelen om git workflows mogelijk te maken.


Deel dit artikel
Volgend onderwerp

Aanbevolen artikelen

Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.

Mensen die samenwerken met een muur vol tools

Bitbucket-blog

Toelichting DevOps

DevOps-leertraject

Demo Den Feature-demo's met Atlassian-experts

Hoe Bitbucket Cloud werkt met Atlassian Open DevOps

Meld je aan voor onze DevOps-nieuwsbrief

Thank you for signing up