Learn Git with Bitbucket Cloud

Learn how to undo changes in Git using Bitbucket Cloud

Objective

Ontdek hoe je veranderingen op je lokale machine en in een Bitbucket Cloud-repository ongedaan maakt terwijl je met anderen samenwerkt.

Mission Brief

Opdrachten die worden behandeld in deze tutorial: git revert, git reset, git log en git status

 

Tijd Publiek Vereisten

40 minuten

Voor deze tutorial nemen we aan dat je vertrouwd bent met de volgende git-opdrachten:

git clone, git commit, git pull en git push
Je hebt Git geïnstalleerd
    Je hebt een Bitbucket-account

Iedereen maakt fouten. Niet elke push is perfect. Daarom helpen we je in deze tutorial op weg met de meest gebruikte git-functies om een wijziging of wijzigingen veilig ongedaan te aken.

Voor deze tutorial nemen we aan dat je vertrouwd bent met de volgende git-opdrachten:

Als je deze opdrachten niet kent, kunnen we je helpen git te leren met Bitbucket Cloud. Kom daarna hier terug om te zien hoe je wijzigingen ongedaan maakt. Deze git-opdrachten kunnen worden gebruikt in een Windows- of Unix-omgeving. In deze tutorial worden Unix-opdrachtregeltools gebruikt voor navigatie door het bestandssysteem.

Undoing changes on your local machine

Wanneer de wijziging die je ongedaan wil maken zich op jouw lokale systeem bevindt en niet naar een externe repository is gepusht, zijn er twee belangrijke manieren om je wijziging ongedaan te maken:

Opdracht Definitie

git revert

Een opdracht 'ongedaan maken', maar niet op de traditionele manier. In plaats van de commit te verwijderen, wordt nagegaan hoe de wijzigingen in de commit kunnen worden omgekeerd en wordt een nieuwe commit met de omgekeerde inhoud toegevoegd. Dit voorkomt dat git geschiedenis verliest, wat belangrijk is voor de integriteit van je revisiegeschiedenis en voor betrouwbare samenwerking.

git reset

Een veelzijdige git-opdracht om wijzigingen ongedaan te maken. De opdracht git reset biedt een serie krachtige opties, maar in deze tutorial gebruiken we alleen de volgende resetmodi:

  • --soft: hiermee wordt alleen de HEAD gereset naar de geselecteerde commit. Werkt ongeveer hetzelfde als git checkout <commit #> maar creëert geen detached head status.
  • --mixed: reset de HEAD op de commit die je in de geschiedenis selecteert en maakt de wijzigingen in de index ongedaan.
  • --hard: reset de HEAD op de commit die je in de geschiedenis selecteert, maakt de wijzigingen in de index ongedaan en maakt de wijzigingen in je werkdirectory ongedaan. In deze tutorial testen we geen harde reset.

Zie git-scm.com's voor een volledige beschrijving van de werking van git reset Git-tools - Reset overzichtelijk gemaakt.

 

In de loop van de tutorial maak je kennis met verschillende andere git-opdrachten terwijl je leert wijzigingen ongedaan te maken. Laten we daarom aan de slag gaan.

Fork a repository

We gaan eerst een unieke repository maken met alle code uit het origineel. Dit proces wordt aangeduid als het 'vertakken van een repository'. Vertakken is een uitgebreid git-proces dat wordt ingeschakeld wanneer een gedeelde repository wordt gehost bij een externe hostingservice zoals Bitbucket.

  1. Klik of geef de volgende URL op: https://bitbucket.org/atlassian/tutorial-documentation-tests/commits/all
  2. Klik in het linker-zijmenu op het symbool +, selecteer vervolgens Deze repository vertakken, neem de inhoud van het venster door en klik op Repository vertakken.
  3. Je komt dan uit bij het overzicht van de nieuwe repository.
  4. Klik op het symbool + en selecteer Deze repository klonen.
  5. Kloon de repository op je computer.
  6. Ga naar de directory met de gekloonde repository.

Nu je een repository met code en een bestaande geschiedenis op je lokale systeem hebt, ben je klaar om enkele wijzigingen ongedaan te maken.

Find changes on your local system

Je moet in staat zijn om de wijziging die je ongedaan wil maken te vinden en ernaar te verwijzen. Dat doe je door te bladeren door de commit-UI van Bitbucket en er zijn een paar opdrachtregeltools waarmee je een specifieke wijziging kunt opzoeken.

git status

Git status retourneert de status van je werkdirectory (de locatie van de repository op je lokale systeem) en het staginggebied (waar je een set wijzigingen voorbereidt die je aan de projectgeschiedenis wil toevoegen) en toont alle bestanden met wijzigingen en of die wijzigingen zijn toegevoegd aan het staginggebied. Laten we nu git status uitvoeren en de huidige status van de repository onderzoeken.

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

De output van git status hier laat zien dat alles is bijgewerkt ten opzichte van de master-branch en dat er geen wijzigingen in behandeling zijn die wachten op een commit. In het volgende voorbeeld brengen we enkele bewerkingen in de repository aan en onderzoeken we deze in een status met wijzigingen in behandeling. Dit betekent dat er wijzigingen zijn in bestanden in de repository op je lokale systeem die je niet hebt voorbereid (of gestaged) voor toevoeging aan de projectgeschiedenis.

Voor dit volgende voorbeeld  open je eerst het bestand myquote2.html. Breng een paar wijzigingen aan in de inhoud van myquote2.html, sla het bestand op en sluit het. Laten we opnieuw proberen git status uit te voeren om de repository in deze status te onderzoeken.

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
 
Changes not staged for commit:
 (use "git add <file>..." to update what will be committed)
 (use "git checkout -- <file>..." to discard changes in working directory)
 
 Modified: myquote2.html
 
no changes added to commit (use "git add" and/or "git commit -a")
--

Uit de output hier blijkt dat de repository wijzigingen in myquote2.html bevat die in behandeling zijn. Goed nieuws! Als de wijziging die je ongedaan wil maken nog niet aan het staginggebied is toegevoegd (zoals in het voorgaande voorbeeld nog), dan kun je het bestand gewoon bewerken en doorgaan. Git begint een wijziging pas te traceren wanneer je deze toevoegt aan het staginggebied en commit naar de projectgeschiedenis.

Laten we nu de wijzigingen die we hebben aangebracht in myquote2.html ongedaan maken. Omdat dit een vereenvoudigd voorbeeld is met minimale wijzigingen, zijn er twee methoden beschikbaar om de wijzigingen ongedaan te maken.  Als we git checkout myquote2.html uitvoeren, wordt de eerder gecommitte versie van myquote2.html in de repository hersteld. We kunnen ook git reset --hard uitvoeren, waardoor de hele repository wordt gereset op de laatste commit.

git log

Met de opdracht git log kun je de projectgeschiedenis weergeven, deze filteren en zoeken naar specifieke wijzigingen. Terwijl je met git status de werkdirectory en het staginggebied kunt inspecteren, toont git log alleen de gecommitte geschiedenis.

Hetzelfde logboek met gecommitteerde geschiedenis vind je in de Bitbucket UI door de 'commits'-weergave van een repository te openen. De commitsweergave van onze demo repository vind je op: https://bitbucket.org/dans9190/tutorial-documentation-tests/commits/all. Deze weergave levert een soortgelijke output op als de opdrachtregeltool git log. Je kunt de weergave gebruiken om een commit te vinden en identificeren die je ongedaan wil maken.

In het volgende voorbeeld zie je verschillende dingen in de geschiedenis, maar is elke wijziging aan de basis een commit. Dat is dus wat we moeten opzoeken en ongedaan moeten maken.

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

nothing to commit, working tree clean

$ git log

commit 1f08a70e28d84d5034a8076db9103f22ec2e982c
Author: Daniel Stevens <dstevens@atlassian.com>
Date:   Wed Feb 7 17:06:50 2018 +0000

    Initial Bitbucket Pipelines configuration

commit 52f823ca251a132225dd1cc18ad768de8d336e84
Author: Daniel Stevens <dstevens@atlassian.com>
Date:   Fri Sep 30 15:50:58 2016 -0700

    repeated quote to show how a change moves through the process

commit 4801b87c2147dce83f1bf31acfcffa6cb1d7e0a5
Merge: 1a6a403 3b29606
Author: Dan Stevens [Atlassian] <dstevens@atlassian.com>
Date:   Fri Jul 29 18:45:34 2016 +0000

    Merged in changes (pull request #6)

    Changes

Laten we een van de commits in de lijst gedetailleerder bekijken:

commit 52f823ca251a132225dd1cc18ad768de8d336e84
Author: Daniel Stevens <dstevens@atlassian.com>
Date:   Fri Sep 30 15:50:58 2016 -0700
 
    repeated quote to show how a change moves through the process

Je kunt zien dat elk commit-bericht uit vier elementen bestaat:

Element Beschrijving

Commithash

Een alfanumerieke tekenreeks (SHA-1-gecodeerd) waarmee deze specifieke wijziging wordt geïdentificeerd

Auteur

De persoon die de wijziging heeft gecommit

Datum

De datum waarop de wijziging naar het project is gecommit

Commitbericht

Een tekenreeks die de wijziging(en) beschrijft.

Best practice-tip: schrijf korte, beschrijvende commitberichten om voor iedereen een meer harmonieuze werkrepository te creëren.


 

 

Locate a specific commit

Hoogstwaarschijnlijk bevindt de wijziging die je ongedaan wil maken zich verder terug in de projectgeschiedenis, die behoorlijk lang kan zijn. Laten we daarom leren werken met een paar git log-basisbewerkingen om te zoeken naar een specifieke wijziging.

  1. Ga naar je terminalvenster en navigeer naar het bovenste niveau van je lokale repository met de opdracht cd (change directory).
$ cd ~/repos/tutorial-documentation-tests/

Voer de opdracht git log --oneline uit. Door de toevoeging --oneline wordt elke commit getoond op één regel, zodat je meer geschiedenis op je terminal kunt zien.

Druk op de toets q om het commitlogboek te verlaten zodat je te allen tijde naar de opdrachtprompt kunt terugkeren.

Je ziet dan iets zoals het volgende voorbeeld:

$ git log --oneline
1f08a70 (HEAD -> master, origin/master, origin/HEAD) Initial Bitbucket Pipelines configuration
52f823c repeated quote to show how a change moves through the process
4801b87 Merged in changes (pull request #6)
1a6a403 myquote edited online with Bitbucket
3b29606 (origin/changes) myquote2.html edited online with Bitbucket
8b236d9 myquote edited online with Bitbucket
235b9a7 testing prs
c5826da more changes
...
  1. Druk op de toets q om terug te gaan naar je opdrachtprompt.
  2. Zoek de commit met hash c5826da en meer wijzigingen op in de lijst geproduceerd met git log. Omdat iemand geen beschrijvend commitbericht heeft geschreven, moeten we uitzoeken of dat de gewenste wijzigingen heeft opgeleverd.
  3. Markeer en kopieer de commithash c5826da in het git log-resultaat in je terminalvenster.
  4. Typ git show, plak of typ de gekopieerde commithash en druk op Enter. Je krijgt dan iets dergelijks te zien:
$git show c5826daeb6ee3fd89e63ce35fc9f3594fe243605
commit c5826daeb6ee3fd89e63ce35fc9f3594fe243605
Author: Daniel Stevens <dstevens@atlassian.com>
Date:   Tue Sep 8 13:50:23 2015 -0700

    more changes

diff --git a/README.md b/README.md
index bdaee88..6bb2629 100644
--- a/README.md
+++ b/README.md
@@ -11,12 +11,7 @@ This README would normally document whatever steps are necessary to get your app
 ### How do I get set up? ###

 * Summary of set up
-* Configuration
-* Dependencies
-* Database configuration
-* How to run tests
-* Deployment instructions
-* more stuff and things
:

De prompt onderaan blijft vollopen totdat de volledige wijziging wordt weergegeven. Druk op q om je opdracht-prompt te verlaten.

Filter the git log to find a specific commit

Je kunt de output van git log filteren en aanpassen met de volgende toevoegingen:

Dit filter Doet dit Deze voorbeeldopdracht Resulteert in
-<n>

Beperkt het aantal getoonde commits

git log -10

De 10 meest recente commits in de geschiedenis

--after

--before

Beperkt de getoonde commits tot de overeenkomstige tijdsperiode

Je kunt ook --after "yyyy-mm-dd" --before "yyyy-mm-dd" gebruiken

git log --after 2017-07-04

Alle commits na 4 juli 2017

--author="name"

Vermeldt alle commits waarvan de auteur overeenkomt met de naam

git log --author="Alana"

Alle commits gemaakt door auteurs met Alana in het naamveld

--grep="message string"

Retourneert voor iedere commit een commitbericht dat overeenkomt met de opgegeven tekenreeks

git log --grep="HOT-"

Alle commits waarin HOT- in het bijbehorende bericht voorkomt als tekenreeks

 

Dit was een heel kort overzicht van de opdracht git log. Als je graag met de opdracht wil werken, is het een goed idee de geavanceerde tutorial over git log door te nemen.

Undo a change with git reset

Laten we aan de slag gaan en de laatste commit in de geschiedenis ongedaan maken. Voor dit voorbeeld nemen we aan dat je net de CI/CD pipelines van Bitbucket hebt ingeschakeld, maar beseft dat het script niet helemaal goed is.

  1. Typ git log --oneline in je terminalvenster.
  2. Kopieer de commithash voor de tweede commit in het log: 52f823c en druk vervolgens op q om het logboek te verlaten.
  3. Typ git reset --soft 52f823c in je terminalvenster. Indien succesvol, wordt de opdracht in de achtergrond uitgevoerd.  Dat is alles, je hebt je eerste wijziging ongedaan gemaakt. Laten we nu het resultaat van deze actie bekijken.
  4. Typ git status in je terminalvenster. Je ziet dan dat de commit ongedaan is gemaakt en dat er nu een niet-gecommitte wijziging is. Dit ziet er ongeveer als volgt uit:
$ git status
On branch master
Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
  (use "git pull" to update your local branch)
 
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
 
    new file:   bitbucket-pipelines.yml
  1. Typ git log --oneline in je terminalvenster. Je krijgt dan iets dergelijks te zien:
$ git log --oneline
52f823c repeated quote to show how a change moves through the process
4801b87 Merged in changes (pull request #6)
1a6a403 myquote edited online with Bitbucket
3b29606 (origin/changes) myquote2.html edited online with Bitbucket
8b236d9 myquote edited online with Bitbucket
235b9a7 testing prs
c5826da more changes
43a87f4 remivng
d5c4c62 a few small changes
23a7476 Merged in new-feature2 (pull request #3)
5cc4e1e add a commit message
cbbb5d6 trying a thing
438f956 adding section for permissions and cleaning up some formatting
23251c1 updated snipptes.xml organization into resources. other files misc changes
3f630f8 Adding file to track changes
...
  1. Je ziet nu dat de nieuwe HEAD van de branch commit 52f823c is, en dat is precies wat je wilde.
  2. Druk op q om het logboek te verlaten. Laat je terminalvenster geopend. Omdat je nu weet hoe je een eenvoudige reset doet, gaan we iets ingewikkelders doen.

Undo several changes with git reset

Laten we zeggen dat je beseft dat  pull-aanvraag 6 (4801b87) moet worden aangepast en dat je een schone geschiedenis wil hebben. Daarom moet je de HEAD resetten op commit 1a6a403. Dat ga je doen met de opdracht git reset.

  1. Typ git log --online
  2. Kopieer de commit-hash 1a6a403 (myquote online bewerkt met Bitbucket)  . Dit is de commit direct onder pull-aanvraag 6, waarin de wijzigingen zitten die we ongedaan willen maken.
  3. Typ git reset 1a6a403 in je terminalvenster. De output moet er ongeveer zo uitzien:
$ git reset 1a6a403
Unstaged changes after reset:
M README.md
M myquote2.html

Je kunt zien dat de wijzigingen nu een niet-gecommitte status hebben. Dit betekent dat we nu diverse wijzigingen uit de geschiedenis van het project en het staginggebied hebben verwijderd.

  1. Typ git status in je terminalvenster. De output moet er ongeveer zo uitzien:

$ git status
On branch master
Your branch is behind 'origin/master' by 6 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)
 
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
 
    modified:   README.md
    modified:   myquote2.html
 
Untracked files:
  (use "git add <file>..." to include in what will be committed)
 
    bitbucket-pipelines.yml
 
no changes added to commit (use "git add" and/or "git commit -a")

Je kunt nu zien dat de eerste wijziging die we ongedaan hebben gemaakt (het bestand bitbucket-pipelines.yml), nu helemaal niet meer wordt getraceerd door git. Dit is omdat de aanroep van git reset de wijziging verwijdert uit de head van de branch en uit het tracerings- of indexgebied van git. Het onderliggende proces is te ingewikkeld om hier te behandelen. Meer informatie daarover vind je in git reset.

  1. Typ git log --oneline in je terminalvenster.
1a6a403 myquote edited online with Bitbucket
8b236d9 myquote edited online with Bitbucket
43a87f4 remivng
d5c4c62 a few small changes
23a7476 Merged in new-feature2 (pull request #3)
5cc4e1e add a commit message
cbbb5d6 trying a thing
438f956 adding section for permissions and cleaning up some formatting
23251c1 updated snipptes.xml organization into resources. other files misc changes
3f630f8 Adding file to track changes
e52470d README.md edited online with Bitbucket
e2fad94 README.md edited online with Bitbucket
592f84f Merge branch 'master' into new-feature2 Merge branch  especially if it merges an updated upstream into a topic branch.
7d0bab8 added a line
879f965 adding to the quote file
8994332 Merged in HOT-235 (pull request #2)
b4a0b43 removed sarcastic remarks because they violate policy.
b5f5199 myquote2.html created online with Bitbucket
b851618 adding my first file
5b43509 writing and using tests

De logboekoutput toont dat de commitgeschiedenis ook is gewijzigd en begint bij commit 1a6a403. Om dit verder te illustreren, nemen we nu aan dat je de net uitgevoerde reset ongedaan wil maken. Na rijp beraad wilden we de inhoud van pull-aanvraag 6 toch behouden.  

Pushing resets to Bitbucket

Git resets zijn een van de verschillende manieren die git biedt om wijzigingen ongedaan te maken. Resets worden gewoonlijk beschouwd als een 'onveilige' optie om wijzigingen ongedaan te maken. Resets zijn prima wanneer je lokaal werkt op losstaande code, maar zijn riskant indien gedeeld met teamleden.

Om een geresette branch te delen met een extern team, moet je een 'geforceerde push' uitvoeren. Een 'geforceerde push' start je door git push -f uit te voeren. Een geforceerde push verwijdert alle geschiedenis op de branch die was gemaakt na het punt van de push.

Een voorbeeld van dit 'onveilige' scenario wordt gevolgd:

  • Ontwikkelaar A heeft op een branch gewerkt aan de ontwikkeling van een nieuwe functie.
  • Ontwikkelaar B heeft op dezelfde branch gewerkt aan de ontwikkeling van een aparte functie.
  • Ontwikkelaar B besluit de branch te resetten op een eerdere status, van vóór het moment waarop ontwikkelaar A en B aan de slag gingen.
  • Ontwikkelaar B pusht de geresette branch geforceerd naar de externe repository.
  • Ontwikkelaar A pullt de branch om updates te ontvangen. Tijdens deze pull ontvangt ontwikkelaar A de geforceerde update. Deze reset de lokale branch van ontwikkelaar A terug in de tijd voordat aan deze functies werd gewerkt, en verwijdert de commits.

Undo a git reset

Tot dusverre hebben we git commit Sha-hashes doorgegeven naar git reset. In de output van git log ontbreken nu de commits die we hebben gereset. Hoe krijgen we die commits weer terug? Git verwijdert een commit pas volledig wanneer deze is losgekoppeld van alle bijbehorende pointers. Verder slaat git een apart logboek op met alle referentiebewegingen, aangeduid als de 'reflog'. We kunnen de reflog onderzoeken door git reflog uit te voeren.

1a6a403 HEAD@{0}: reset: moving to 1a6a403
1f08a70 HEAD@{1}: reset: moving to origin/master
1f08a70 HEAD@{2}: clone: from git@bitbucket.org:dans9190/tutorial-documentation-tests.git

Je output van git reflog moet vergelijkbaar zijn met die hiervoor. Je kunt een geschiedenis weergeven van acties op de repo. De bovenste regel is een verwijzing naar de reset die we hebben gedaan om pull-aanvraag 6 te resetten. Laten we nu de reset resetten om pull-aanvraag 6 te herstellen. De tweede kolom van deze reflog-output bevat een referentiepointer naar een wijzigingsactie uitgevoerd op de repo. Hier is HEAD@{0} een verwijzing naar de eerder uitgevoerde resetopdracht. We willen niet reageren op die resetopdracht. Daarom herstellen we de repo naar HEAD@{1}.

$ git reset --hard HEAD@{1}
HEAD is now at 1f08a70 Initial Bitbucket Pipelines configuration

Laten we nu de commitgeschiedenis van de repo's onderzoeken met git log --oneline:

$git log --online
1f08a70 Initial Bitbucket Pipelines configuration
52f823c repeated quote to show how a change moves through the process
4801b87 Merged in changes (pull request #6)
1a6a403 myquote edited online with Bitbucket
3b29606 myquote2.html edited online with Bitbucket
8b236d9 myquote edited online with Bitbucket
235b9a7 testing prs
c5826da more changes
43a87f4 remivng
d5c4c62 a few small changes
23a7476 Merged in new-feature2 (pull request #3)
5cc4e1e add a commit message
cbbb5d6 trying a thing
438f956 adding section for permissions and cleaning up some formatting
23251c1 updated snipptes.xml organization into resources. other files misc changes
3f630f8 Adding file to track changes
e52470d README.md edited online with Bitbucket
e2fad94 README.md edited online with Bitbucket
592f84f Merge branch 'master' into new-feature2 Merge branch  especially if it merges an updated upstream into a topic branch.
7d0bab8 added a line
:

Hier kunnen we zien dat de commitgeschiedenis van de repo's is hersteld naar de vorige versie waarmee we experimenteerden. We kunnen zien dat commit 4801b87 is hersteld, hoewel deze uit de eerste resetbewerking verdwenen leek te zijn. De git reflog is een krachtige tool om wijzigingen in de repository ongedaan te maken. Meer gedetailleerde informatie over het gebruik ervan vind je op de pagina git reflog.

git revert

In de vorige serie voorbeelden werden bewerkingen uit een verder verleden ongedaan gemaakt met git reset en git reflog. Git bevat een andere tool om bewerkingen ongedaan te maken die vaak als 'veiliger' wordt beschouwd dan resetten. Met terugzetten worden nieuwe commits gemaakt die een omkering bevatten van de gespecificeerde commitwijzigingen. Deze terugzetcommits kunnen vervolgens veilig worden gepusht naar externe repository's, waar ze kunnen worden gedeeld met andere ontwikkelaars.

In het volgende gedeelte wordt het gebruik van git revert geïllustreerd. We gaan verder met ons voorbeeld uit het vorige gedeelte. We onderzoeken eerst het logboek om een commit te vinden die we willen terugzetten.

$ git log --online
1f08a70 Initial Bitbucket Pipelines configuration
52f823c repeated quote to show how a change moves through the process
4801b87 Merged in changes (pull request #6)
1a6a403 myquote edited online with Bitbucket
1f08a70 Initial Bitbucket Pipelines configuration
52f823c repeated quote to show how a change moves through the process
4801b87 Merged in changes (pull request #6)
1a6a403 myquote edited online with Bitbucket
3b29606 myquote2.html edited online with Bitbucket
8b236d9 myquote edited online with Bitbucket
235b9a7 testing prs
c5826da more changes
43a87f4 remivng
d5c4c62 a few small changes
23a7476 Merged in new-feature2 (pull request #3)
5cc4e1e add a commit message
cbbb5d6 trying a thing
438f956 adding section for permissions and cleaning up some formatting
23251c1 updated snipptes.xml organization into resources. other files misc changes
3f630f8 Adding file to track changes
e52470d README.md edited online with Bitbucket
e2fad94 README.md edited online with Bitbucket
592f84f Merge branch 'master' into new-feature2 Merge branch  especially if it merges an updated upstream into a topic branch.
7d0bab8 added a line
:

Voor dit voorbeeld kiezen we commit 1f08a70 als de commit waarmee we aan de slag willen gaan. In dit scenario willen de in die commit aangebrachte bewerkingen ongedaan maken. Uitvoeren:

$ git revert 1f08a70

Hiermee starten we een git merge-workflow. Git maakt een nieuwe commit waarvan de inhoud een terugzetting is van de commit die was opgegeven de de terugzetbewerking. Git opent vervolgens een geconfigureerde teksteditor om naar een nieuw commitbericht te vragen. Terugzettingen worden dankzij deze commit-workflow beschouwd als een veiligere optie om bewerkingen ongedaan te maken. Het maken van terugzetcommits laat een duidelijker spoor achter in de commitgeschiedenis van het moment waarop een 'ongedaan maken'-bewerking is uitgevoerd.

You just learned how to undo changes!

Gefeliciteerd, je hebt alles af! Je kunt te allen tijde terugkomen naar deze tutorial of naar het gedeelte Wijzigingen ongedaan maken gaan voor meer details. Succes met Bitbucket!