Leer hoe je wijzigingen ongedaan kunt maken in Git met Bitbucket Cloud
Doel
Ontdek hoe je veranderingen op je lokale machine en in een Bitbucket Cloud-repository ongedaan maakt terwijl je met anderen samenwerkt.
Omschrijving missie
Opdrachten die in deze tutorial worden behandeld:
- git revert, git reset, git-log, git-status
Tijd
40 minuten
Publiek
In deze tutorial wordt ervan uitgegaan dat je vertrouwd bent met de git-opdrachten:git clone
, git commit
, git pull
en git push
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.
Wijzigingen ongedaan maken op je lokale computer
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 |
---|---|
| Definitie 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. |
| Definitie
Een veelzijdige
Zie git-scm.com's voor een volledige beschrijving van de werking van |
Oplossing bekijken
Geavanceerde Git-tutorials
gerelateerd materiaal
Git-opdrachten
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.
Een repository vertakken
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.
Wijzigingen in je lokale computer zoeken
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
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
On branch main
Your branch is up-to-date with 'origin/main'.
nothing to commit, working tree clean
De output van git status
hier laat zien dat alles is bijgewerkt ten opzichte van de externe main-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 main
Your branch is up-to-date with 'origin/main'.
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 main
Your branch is up-to-date with 'origin/main'.
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 | Beschrijving Een alfanumerieke tekenreeks (SHA-1-gecodeerd) waarmee deze specifieke wijziging wordt geïdentificeerd |
Auteur | Beschrijving De persoon die de wijziging heeft gecommit |
Datum | Beschrijving De datum waarop de wijziging naar het project is gecommit |
Commitbericht | Beschrijving Een tekenreeks die de wijziging(en) beschrijft. Best practice-tip: schrijf korte, beschrijvende commitberichten om voor iedereen een meer harmonieuze werkrepository te creëren. |
Een specifieke commit zoeken
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 -> main, origin/main, 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
...
2. Druk op de toets q om terug te gaan naar je opdrachtprompt.
3. 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.
4. Markeer en kopieer de commithash c5826da
in het git log
-resultaat in je terminalvenster.
5. 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.
Het Git-logboek filteren om een specifieke commit te vinden
Dit filter | Doet dit | Deze voorbeeldopdracht | Resulteert in |
---|---|---|---|
| Doet dit Beperkt het aantal getoonde commits | Deze voorbeeldopdracht | Resulteert in De 10 meest recente commits in de geschiedenis |
| Doet dit Beperkt de getoonde commits tot het bijbehorende tijdsbestekJe kunt ook | Deze voorbeeldopdracht | Resulteert in Alle commits na 4 juli 2017 |
| Doet dit Vermeldt alle commits waarvan de auteur overeenkomt met de naam | Deze voorbeeldopdracht | Resulteert in Alle commits gemaakt door auteurs met Alana in het naamveld |
| Doet dit Retourneert voor iedere commit een commitbericht dat overeenkomt met de opgegeven tekenreeks | Deze voorbeeldopdracht | Resulteert in 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 wilt werken, is het een goed idee de geavanceerde tutorial over git log door te nemen.
Een wijziging ongedaan maken met 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 main
Your branch is behind 'origin/main' 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
5. 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
6. Je ziet nu dat de nieuwe HEAD
van de branch commit 52f823c
is, en dat is precies wat je wilde.
7. 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.
Verschillende wijzigingen ongedaan maken met 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 --online
2. Kopieer de commit-hash 1a6a403
(myquote online bewerkt met Bitbucket). Dit is de commit direct onder pull request 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.
4. Typ git status
in je terminalvenster. De output moet er ongeveer zo uitzien:
$ git status
On branch main
Your branch is behind 'origin/main' 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
.
5. 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 'main' 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 request 6 toch behouden.
Resets naar Bitbucket pushen
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.
Een git reset ongedaan maken
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/main
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 de resetopdracht niet opnieuw uitvoeren. 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 'main' into new-feature2 Merge branch especially if it merges an updated upstream into a topic branch.
7d0bab8 added a line
:
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 request 6 toch behouden.
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 'main' 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.
Je hebt net geleerd hoe je wijzigingen ongedaan kunt maken!
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!
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.