-
1. Aan die slag
- 1.1 Oor Weergawebeheer
- 1.2 Wat is Git?
- 1.3 Die Opdragreël
- 1.4 Git Installeer
- 1.5 Git klaarmaak vir eerste gebruik
- 1.6 Hulp Verkry
- 1.7 Opsomming
-
2. Git Basics
-
3. Git Branching
-
4. Git on the Server
- 4.1 Die Protokolle (The Protocols)
- 4.2 Git op 'n Bediener kry (Getting Git on a Server)
- 4.3 Jou Publieke SSH-sleutel Genereer (Generating Your SSH Public Key)
- 4.4 Die Bediener Opstel (Setting Up the Server)
- 4.5 Git Daemon
- 4.6 Slim HTTP (Smart HTTP)
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Derdeparty-gasheuroplossings (Third-Party Hosting Solutions)
- 4.10 Summary
-
5. Distributed Git
-
6. GitHub
-
7. Git Tools
- 7.1 Hersieningseleksie (Revision Selection)
- 7.2 Interaktiewe Voorbereiding (Interactive Staging)
- 7.3 Bêre en Skoonmaak (Stashing and Cleaning)
- 7.4 Ondertekening van Jou Werk (Signing Your Work)
- 7.5 Soek (Searching)
- 7.6 Herskryf van Geskiedenis (Rewriting History)
- 7.7 Reset Ontmystifiseer (Reset Demystified)
- 7.8 Gevorderde Saamsmelting (Advanced Merging)
- 7.9 Rerere
- 7.10 Ontfouting met Git (Debugging with Git)
- 7.11 Submodules
- 7.12 Bundeling (Bundling)
- 7.13 Vervang (Replace)
- 7.14 Die Stoor van Aanmeldbewyse (Credential Storage)
- 7.15 Summary
-
8. Customizing Git
-
9. Git and Other Systems
- 9.1 Git as a Client
- 9.2 Migrating to Git
- 9.3 Summary
-
10. Git Internals
3.3 Git Branching - Tak-bestuur (Branch Management)
Tak-bestuur (Branch Management)
Noudat jy 'n paar takke (branches) geskep, saamgesmelt (merged), en uitgevee het, kom ons kyk na 'n paar tak-bestuursinstrumente (branch-management tools) wat handig te pas sal kom wanneer jy heeltyd takke begin gebruik.
Die git branch opdrag doen meer as net om takke te skep en uit te vee.
As jy dit sonder enige argumente uitvoer, kry jy 'n eenvoudige lys van jou huidige takke:
$ git branch
iss53
* master
testing
Let op die * karakter wat vooraan die master tak staan: dit dui die tak aan wat jy tans uitgecheck (checked out) het (dit wil sê, die tak waarna HEAD wys).
Dit beteken dat as jy op hierdie punt vaslê (commit), sal die master tak vorentoe geskuif word met jou nuwe werk.
Om die laaste vaslegging (commit) op elke tak te sien, kan jy git branch -v uitvoer:
$ git branch -v
iss53 93b412c Fix javascript issue
* master 7a98805 Merge branch 'iss53'
testing 782fd34 Add scott to the author list in the readme
Die nuttige --merged en --no-merged opsies kan hierdie lys filtreer na takke wat jy reeds, of nog nie, saamgesmelt (merged) het met die tak waarop jy tans is nie.
Om te sien watter takke reeds by jou huidige tak saamgesmelt is, kan jy git branch --merged uitvoer:
$ git branch --merged
iss53
* master
Omdat jy vroeër reeds iss53 ingesmelt (merged) het, sien jy dit in jou lys.
Takke op hierdie lys sonder die * vooraan is oor die algemeen veilig om uit te vee met git branch -d; jy het reeds hul werk in 'n ander tak geïnkorporeer, so jy gaan niks verloor nie.
Om al die takke te sien wat werk bevat wat jy nog nie saamgesmelt (merged) het nie, kan jy git branch --no-merged uitvoer:
$ git branch --no-merged
testing
Dit wys jou ander tak.
Omdat dit werk bevat wat nog nie saamgesmelt (merged) is nie, sal 'n poging om dit met git branch -d uit te vee, misluk:
$ git branch -d testing
error: The branch 'testing' is not fully merged.
If you are sure you want to delete it, run 'git branch -D testing'.
As jy regtig die tak wil uitvee en daardie werk wil verloor, kan jy dit afdwing (force) met -D, soos die behulpsame boodskap uitwys.
|
Tip
|
Die opsies hierbo beskryf, Jy kan altyd 'n bykomende argument verskaf om na die saamsmeltings-status (merge state) met betrekking tot 'n ander tak te vra sonder om daardie ander tak eers uit te check (checkout), soos in, wat is nog nie in die
|
'n Taknaam verander (Changing a branch name)
|
Caution
|
Moenie takke hernoem (rename) wat steeds deur ander medewerkers in gebruik is nie. Moenie 'n tak soos master/main/mainline hernoem sonder om die afdeling Die master-tak se naam verander (Changing the master branch name) te lees nie. |
Veronderstel jy het 'n tak wat bad-branch-name genoem word en jy wil dit verander na corrected-branch-name, terwyl jy alle geskiedenis behou.
Jy wil ook die taknaam op die afgeleë bediener (remote) soos GitHub, GitLab, of 'n ander bediener verander.
Hoe doen jy dit?
Hernoem (rename) die tak plaaslik (locally) met die git branch --move opdrag:
$ git branch --move bad-branch-name corrected-branch-name
Dit vervang jou bad-branch-name met corrected-branch-name, maar hierdie verandering is vir eers net plaaslik (local).
Om ander toe te laat om die gekorrigeerde tak op die afgeleë bediener (remote) te sien, stuur (push) dit op:
$ git push --set-upstream origin corrected-branch-name
Kom ons kyk nou kortliks na waar ons nou is:
$ git branch --all
* corrected-branch-name
main
remotes/origin/bad-branch-name
remotes/origin/corrected-branch-name
remotes/origin/main
Let op dat jy op die corrected-branch-name tak is en dit op die afgeleë bediener (remote) beskikbaar is.
Die tak met die slegte naam is egter ook nog daar teenwoordig, maar jy kan dit uitvee deur die volgende opdrag uit te voer:
$ git push origin --delete bad-branch-name
Nou is die slegte taknaam ten volle vervang met die gekorrigeerde taknaam.
Die master-tak se naam verander (Changing the master branch name)
|
Warning
|
Om die naam van 'n tak soos master/main/mainline/default te verander, sal die integrasies, dienste, hulpmiddels (helper utilities) en bou/vrystelling-skrifte (build/release scripts) wat jou bewaarplek (repository) gebruik, breek. Maak seker dat jy met jou medewerkers konsulteer voordat jy dit doen. Maak ook seker dat jy 'n deeglike soektog deur jou bewaarplek (repo) doen en enige verwysings na die ou taknaam in jou kode en skrifte opdateer. |
Hernoem jou plaaslike master tak na main met die volgende opdrag:
$ git branch --move master main
Daar is nie meer 'n plaaslike master tak nie, aangesien dit hernoem is na die main tak.
Om ander toe te laat om die nuwe main tak te sien, moet jy dit na die afgeleë bediener (remote) opstuur (push).
Dit maak die hernoemde tak op die afgeleë bediener (remote) beskikbaar.
$ git push --set-upstream origin main
Nou eindig ons op met die volgende toestand:
$ git branch --all
* main
remotes/origin/HEAD -> origin/master
remotes/origin/main
remotes/origin/master
Jou plaaslike master tak is weg, aangesien dit vervang is met die main tak.
Die main tak is teenwoordig op die afgeleë bediener (remote).
Die ou master tak is egter steeds teenwoordig op die afgeleë bediener.
Ander medewerkers sal voortgaan om die master tak as die basis vir hul werk te gebruik, totdat jy verdere veranderings aanbring.
Nou het jy nog 'n paar take voor jou om die oorgang te voltooi:
-
Enige projekte wat van hierdie een afhanklik is, sal hul kode en/of konfigurasie moet opdateer.
-
Dateer enige toetsloper-konfigurasielêers (test-runner configuration files) op.
-
Pas bou- en vrystelling-skrifte (build and release scripts) aan.
-
Herlei (redirect) instellings op jou repo-gasheer (host) vir dinge soos die repo se verstektak (default branch), saamsmeltreëls (merge rules), en ander dinge wat by takname pas.
-
Dateer verwysings na die ou tak in dokumentasie op.
-
Maak enige "pull requests" toe, of smelt hulle saam (merge), wat die ou tak as teiken het.
Nadat jy al hierdie take gedoen het, en seker is dat die main tak presies soos die master tak presteer, kan jy die master tak uitvee:
$ git push origin --delete master