Close

Leer branchen met Bitbucket Cloud

Doel

In deze tutorial leer je de basisbeginselen van het aanmaken, werken, beoordelen en samenvoegen van branches met Git en Bitbucket Cloud.

Tijd

35 minuten

Publiek

Je begrijpt de basisworkflow van Git al

Deze tutorial is bedoeld voor jou als je de basisworkflow van Git al begrijpt en bekend bent met:

  • Klonen: de externe repository in Bitbucket Cloud naar je lokale systeem kopiëren
  • Toevoegen of stagen: wijzigingen aanbrengen die je hebt aangebracht en ze klaarmaken om toe te voegen aan je git-geschiedenis
  • Doorvoeren: nieuwe of gewijzigde bestanden toevoegen aan de git-geschiedenis voor de repository
  • Pullen: nieuwe wijzigingen ophalen die anderen aan de repository hebben toegevoegd in je lokale repository
  • Pushen: wijzigingen van je lokale systeem overbrengen naar de externe repository

Als je de basisbeginselen van Git niet kent, hoef je je geen zorgen te maken, bekijk dan gewoon onze tutorial Git met Bitbucket Cloud leren en je bent in een mum van tijd op de hoogte.

Waarom branching belangrijk is

Branching is een van de beste manieren om het meeste uit Git te halen voor versiebeheer. Met branching in Git kun je het volgende doen:

  • Meerdere teams tegelijkertijd vanuit één repository laten werken.
  • Zorgen dat teamleden overal ter wereld Bitbucket Cloud gebruiken om samen te werken.
  • Meerdere ontwikkelingslijnen tegelijk laten draaien, onafhankelijk van elkaar, zonder dat de code hoeft te worden vastgezet.

Snel opgezet


Omdat we willen dat je het gevoel hebt dat je in een team werkt, zullen we je een door ons geleverde, openbare Bitbucket-repository laten vertakken.

Wat is een vertakking?

Vertakken is een andere manier om een kloon of kopie op te slaan. De term vertakken (in programmering) is afgeleid van een Unix-systeemaanroep die een kopie maakt van een bestaand proces. In tegenstelling tot een branch is een vertakking dus onafhankelijk van de oorspronkelijke repository. Als de oorspronkelijke repository wordt verwijderd, blijft de vertakking behouden. Als je een repository vertakt, verkrijg je die repository en alle branches ervan.

1. Ga naar tutorials/tutorials.git.bitbucket.org

2. Klik op + > Deze repository vertakken aan de linkerkant van het scherm.

3. Pas de Naam aan zodat deze uniek is voor jouw team en klik vervolgens op Repository vertakken.

4. Maak een map voor de repository waar je gemakkelijk naar kunt navigeren. Je krijgt dan ongeveer het volgende te zien:

Logo Bitbucket
Oplossing bekijken

Git leren met Bitbucket Cloud

Git-logo
gerelateerd materiaal

Git-opdrachten

$ mkdir test-repositories $ cd test-repositories/ $ test-repositories

In het voorgaande voorbeeld wordt de map test-repository's gemaakt met behulp van de opdracht mkdir (make directory) en wordt naar die map gegaan met het opdracht cd (change directory).

5. Kloon de vertakte repository naar de map die je net hebt aangemaakt. Dit ziet er ongeveer als volgt uit:

$ git clone https://dstevenstest@bitbucket.org/dstevenstest/mygittutorial.bitbucket.io.git     Cloning into 'mygittutorial.bitbucket.io'...     remote: Counting objects: 12392, done.     remote: Compressing objects: 100% (12030/12030), done.     remote: Total 12392 (delta 8044), reused 564 (delta 360)     Receiving objects: 100% (12392/12392), 2.72 MiB | 701.00 KiB/s, done.     Resolving deltas: 100% (8044/8044), done. $ cd mygittutorial.bitbucket.io/

Hiermee wordt de repository gekloond met de opdracht git clone en wordt de map aanmaakt die de kloon heeft aangemaakt mygittutorial.git.bitbucket.io.

Een branch aanmaken en iets wijzigen met behulp van de branchingworkflow

Je gaat een offerte toevoegen op je website in deze branch.

1. Maak een branch aan met de opdracht git branch.

$ git branch test-1

2. Bekijk met de opdracht git checkout de branch die je zojuist hebt aangemaakt.

$ git checkout test-1 Switched to branch 'test-1'

3. Maak een lijst met je lokale branches met de opdracht git branch.

$ git branch   main   * test-1

4. Maak een update uit van het editme.html bestand door een offerte toe te voegen. Je kunt zoiets doen als hieronder:

This is a quote, and I like it.
   A quote: The Art of Quoting 

5. Voeg die wijziging toe.

git add editme.html

Opmerking: je wijziging is niet toegewezen aan de geschiedenis van Git, maar is nog in een 'wachtende' toestand. We hebben hierover meer geleerd in Wijzigingen opslaan.

6. Voer de wijziging uit met een beschrijvend commit-bericht.

git commit editme.html -m'added a new quote' [test-1 063b772] added a new quote 1 file changed, 3 insertions(+), 3 deletions(-)

Opmerking: de wijzigingen maken nu deel uit van de geschiedenis van Git als één 'commit'. We hebben hierover meer geleerd in Wijzigingen opslaan.

7. Push die wijziging naar Bitbucket met de opdracht git push.

git push fatal: The current branch test-1 has no upstream branch. To push the current branch and set the remote as upstream, use   git push --set-upstream origin test-1

Je krijgt dan een foutmelding te zien, want de eerste keer dat je een nieuw branch pusht die je lokaal hebt aangemaakt, moet je die branch aanwijzen.

8. Push de branch en de wijziging met de opdracht git push branch.

$ git push origin test-1 Counting objects: 3, done. Delta compression using up to 8 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 363 bytes | 0 bytes/s, done. Total 3 (delta 2), reused 0 (delta 0) remote: remote: Create pull request for test-1: remote: https://bitbucket.org/dstevenstest/dans.git.bitbucket.org/pull-requests/new?source=test-1&t=1 remote: To https://bitbucket.org/dstevenstest/dans.git.bitbucket.org.git * [new branch] test-1 -> test-1

Dit vertelt het systeem dat de oorspronkelijke repository de bestemming is van deze nieuwe branch.

9. Open je repository voor tutorials en klik op Branches. Je zou nu zowel de main-branch als de test-1-branch moeten zien. Dit ziet er ongeveer als volgt uit:

Centrale git-repo naar lokale git-repo

Een externe branch aanmaken, ophalen en uitchecken

Als je in een team werkt, zul je waarschijnlijk branches moeten pullen of ophalen die andere teamleden aanmaken en naar Bitbucket pushen. Dit voorbeeld geeft je een aantal basisbeginselen van het aanmaken van en werken met filialen die anderen aanmaken.

1. Ga naar je repository voor tutorials in Bitbucket en klik op Branches. Je krijgt dan iets dergelijks te zien:

Tutorial branches

2. Klik op Branch aanmaken, noem de branche test-2 en klik op Aanmaken.

3. Kopieer de opdracht git fetch in het dialoogvenster Jouw branches uitchecken. Dit ziet er waarschijnlijk ongeveer als volgt uit:

$ git fetch && git checkout test-2 From https://bitbucket.org/dstevenstest/dans.git.bitbucket.org * [new branch] test-2 -> origin/test-2 Branch test-2 set up to track remote branch test-2 from origin. Switched to a new branch 'test-2'

4. Gebruik de opdracht git branch in je terminal. Je ziet nu ongeveer de volgende lijst met branches:

$ git branch   main   test-1 * test-2

De branch met het sterretje * is de actieve branch. Dit is van cruciaal belang om te onthouden wanneer je in een workflow met branches werkt.

5. Gebruik de opdracht git status en je krijgt zoiets als dit te zien:

$ git status On branch test-2 Your branch is up-to-date with 'origin/test-2'. nothing to commit, working tree clean

Je kunt zien in welke branch je je bevindt en of de branch momenteel up-to-date is ten opzichte van je externe (oorspronkelijke) branch.

6. Gebruik de opdracht git checkout om de focus weer naar je andere branch te verleggen. De opdracht moet er ongeveer zo uitzien:

$ git checkout test-1 Switched to branch 'test-1' Your branch is ahead of 'origin/test-1' by 3 commits. (use "git push" to publish your local commits)

Een van de belangrijkste dingen om te onthouden als je in branches werkt, is dat je er zeker van wilt zijn dat je in de juiste branch wijzigingen aanbrengt.

Een wijziging pushen en een pull-aanvraag aanmaken

Nu is het tijd om je eerste wijziging te laten beoordelen en de branch samen te voegen.

1. Klik op +>Pull request aanmaken. Je kunt je test-1-branch zien als bronbranch en main in de bestemmingsbranch.

Omdat we deze repository hebben gemaakt door een bestaande repository te vertakken, is de bestemming ingesteld op de main-branch van de repository die we hebben vertakt.

Om dit recht te zetten, moet je de bestemmingsbranch van de repository (de branch waarin je je wijzigingen gaat samenvoegen) wijzigen van tutorials/tutorials.git.bitbucket.org in jouw repository.

Pull request

Je zou ook beoordelaars van je team toevoegen aan de pull-aanvraag. Meer informatie over pull-aanvragen

2. Klik op Pull request aanmaken.

3. Plaats een opmerking in de pull request door een regel te selecteren in het diff (het gebied met de wijziging die je hebt aangebracht in het bestand editme.html) .

4. Klik linksboven op de pagina op Goedkeuren. Bij een echte pull request zou je natuurlijk beoordelaars opmerkingen laten plaatsen

5. Klik op Samenvoegen.

6. (Optioneel) Werk het Commitbericht bij met meer informatie.

7. Selecteer de Merge-commit Merge-strategie uit de twee opties: Meer informatie over deze twee soorten merge-strategieën.

  • Commit samenvoegen—Behoudt alle commits van je bronbranch bij en maakt ze onderdeel van de bestemmingsbranch. Deze optie doet hetzelfde als git merge --no-ff op de opdrachtregel.
  • Squash—Combineert je commits wanneer je het bronfiliaal samenvoegt met het branch van bestemming. Deze optie is hetzelfde als git merge —squash invoeren op de commandoregel.

8. Klik op Commits om te zien hoe de branch die je zojuist hebt samengevoegd, past in het grotere schema van wijzigingen.

Een branch verwijderen en de main-branch pullen naar de lokale werkbranch

Je hebt nu de basisworkflow voor branching doorlopen en je wijziging staat in de main. Het laatste dat we gaan leren is hoe je de net samengevoegde branch verwijdert, de bijgewerkte main-branch pullt en de bijgewerkte main-branch samenvoegt in je test-2-branch.

Waarom de branch verwijderen?

Vergeet niet dat branching in Git verschilt van SVN of vergelijkbare versiebeheersystemen doordat branches zowel langlopende branches zijn (zoals een main- en ontwikkelingsbranch) als ontwikkelingsbranches voor de korte termijn (zoals de voorbeelden die we in deze tutorial gebruiken). Omdat dit het geval is, is het geen slecht idee om lokale branches te verwijderen om je lokale omgeving schoner te houden.

Waarom zou je de main-branch pullen en die samenvoegen in test-2?

We gebruiken dit als voorbeeld van hoe je aan een repository werkt waar een ander teamlid aan werkt. Het is een goed idee om van tijd tot tijd veranderingen in je branch te pullen om samenvoegingsconflicten bij pull-aanvragen te voorkomen.

1. Open je terminal en voer de opdracht git status uit. Het resultaat zou er ongeveer zo uit moeten zien:

$ git status On branch test-1 nothing to commit, working tree clean

Je kunt zien dat je in de branch zit die je hebt gebruikt om je wijziging aan te brengen en dat je geen wijzigingen hebt. We zijn klaar om ons van die branch te ontdoen nu we gereed zijn met dat werk.

2. Schakel over naar de main-branch door de opdracht git checkout main uit te voeren. De output moet er ongeveer zo uitzien:

git checkout main Switched to branch 'main' Your branch is up-to-date with 'origin/main'.

Zie je dat in het bericht staat dat je up-to-date bent? Dit is alleen je lokale branch. We weten dit omdat we net een wijziging hebben samengevoegd in de main-branch en die wijziging niet hebben gepulld van de externe repository naar ons lokale systeem. Dat gaan we als volgende doen.

3. Voer de opdracht git pull uit. De output moet er ongeveer zo uitzien:

$ git pull remote: Counting objects: 1, done. remote: Total 1 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (1/1), done. From https://bitbucket.org/dstevenstest/dans.git.bitbucket.org 2d4c0ab..dd424cb main -> origin/main Updating 2d4c0ab..dd424cb Fast-forward editme.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)

Wat er is gebeurd, is dat wanneer je de wijzigingen uit de externe repository pullt, Git een snelle samenvoeging uitvoert om de door jou aangebrachte wijzigingen te integreren. Er wordt ook aangegeven hoeveel bestanden en regels in dat bestand zijn gewijzigd.

4. Voer de opdracht git branch -d {branch_name} uit om de test-1-branch te verwijderen. Het resultaat ziet er ongeveer zo uit:

$ git branch -d test-1 Deleted branch test-1 (was 063b772)

Je kunt zien dat de branch is verwijderd en wat de laatste commithash voor die branch was. Dit is de veilige manier om een branch te verwijderen, want met git kun je de branch niet verwijderen als er ongecommitte wijzigingen zijn. Je moet je er echter van bewust zijn dat dit niet voorkomt dat je wijzigingen verwijdert die zijn gecommit in de Git-geschiedenis maar niet zijn samengevoegd in een andere branch.

5. Schakel naar de test-2-branch over met de opdracht git checkout.

$ git checkout test-2 Switched to branch 'test-2' Your branch is up-to-date with 'origin/test-2'.

6. Voeg de main-branch samen in je werkende branch met de opdracht git merge main test-2. Het resultaat ziet er ongeveer zo uit:

$ git merge main test-2 Updating 2d4c0ab..dd424cb Fast-forward editme.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)

Het is belangrijk om het volgende te onthouden:

  • De actieve branch is belangrijk. Als je de main-branche wilt samenvoegen in test-2, dan wil je test-2 laten uitchecken (actief). Hetzelfde geldt als je test-2 wilt samenvoegen in de main-branch: dan moet je de main-branch laten uitchecken.
  • Om te zien welke branch op een bepaald actief is, kun je git branch gebruiken om de actieve branch met een sterretje te markeren, of git status gebruiken zodat je kunt zien in welke branch je zit en of er lokale wijzigingen in behandeling zijn.

We hopen dat je iets hebt geleerd over branching en de bijbehorende opdrachten. We hebben net hebben besproken:

Bekijk de workflow voor branches


De Git-workflow feature-branches is een efficiënte manier om met je team aan de slag te gaan in Bitbucket. In deze workflow vindt alle ontwikkeling van functies plaats in branches die gescheiden zijn van de main-branch. Daardoor kunnen meerdere ontwikkelaars aan hun eigen functies werken zonder de hoofdcode aan te raken.

Begin met de main-branch

Deze workflow helpt je om met minstens één andere persoon aan je code samen te werken. Zolang je Bitbucket en lokale repo's up-to-date zijn, ben je klaar om aan de slag te gaan.

Nieuwe branch aanmaken

Gebruik een aparte branch voor elke functie of issue waaraan je werkt. Nadat je een branch hebt aangemaakt, moet je die lokaal uitchecken zodat alle wijzigingen worden aangebracht in die branch.

Wijzigingen bijwerken, toevoegen, committen en pushen

Werk aan de functie en maak commits zoals je dat altijd doet wanneer je Git gebruikt. Als je klaar bent, kun je je commits pushen om de feature-branch in Bitbucket bij te werken.

Laat je code beoordelen

Om feedback op je code te krijgen, kun je een pull-aanvraag aanmaken in Bitbucket. Van daaruit kun je beoordelaars toevoegen en ervoor zorgen dat alles in orde is voordat je gaat samenvoegen.

Feedback verwerken

Nu geven je teamgenoten opmerkingen en goedkeuring. Verwerk hun opmerkingen lokaal, voer wijzigingen door en push ze naar Bitbucket. Je updates verschijnen in de pull-aanvraag.

Je branch samenvoegen

Voordat je gaat samenvoegen, moet je mogelijk samenvoegingsconflicten oplossen als anderen wijzigingen hebben aangebracht in de repo. Als je pull-aanvraag is goedgekeurd en conflictvrij is, kun je je code toevoegen aan de main-branch. Voeg je code samen vanuit de pull-aanvraag in Bitbucket.

Deze tutorial is beperkt in de mogelijkheid om te laten zien hoe branches teams effectiever maken. Er zijn verschillende benaderingen van branching, waarvan we er een paar bespreken in: Workflows vergelijken.


Deel dit artikel

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