-
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
7.4 Git Tools - Ondertekening van Jou Werk (Signing Your Work)
Ondertekening van Jou Werk (Signing Your Work)
Git is kriptografies veilig, maar dit is nie onfeilbaar nie. As jy werk van ander op die internet neem en wil verifieer dat vasleggings (commits) werklik van 'n betroubare bron afkomstig is, het Git 'n paar maniere om werk met behulp van GPG te onderteken en te verifieer.
GPG-Inleiding
Eerstens, as jy enigiets wil onderteken, moet jy GPG opstel en jou persoonlike sleutel installeer.
$ gpg --list-keys
/Users/schacon/.gnupg/pubring.gpg
---------------------------------
pub 2048R/0A46826A 2014-06-04
uid Scott Chacon (Git signing key) <schacon@gmail.com>
sub 2048R/874529A9 2014-06-04
As jy nie 'n sleutel geïnstalleer het nie, kan jy een genereer met gpg --gen-key.
$ gpg --gen-key
Sodra jy 'n privaatsleutel het om mee te onderteken, kan jy Git opstel om dit te gebruik deur die user.signingkey konfigurasie-instelling te stel.
$ git config --global user.signingkey 0A46826A
Nou sal Git by verstek jou sleutel gebruik om merkers (tags) en vasleggings te onderteken as jy wil.
Ondertekening van Merkers (Signing Tags)
As jy 'n GPG-privaatsleutel opgestel het, kan jy dit nou gebruik om nuwe merkers te onderteken.
Al wat jy hoef te doen is om -s in plaas van -a te gebruik:
$ git tag -s v1.5 -m 'my signed 1.5 tag'
You need a passphrase to unlock the secret key for
user: "Ben Straub <ben@straub.cc>"
2048-bit RSA key, ID 800430EB, created 2014-05-04
As jy git show op daardie merker uitvoer, kan jy sien dat jou GPG-handtekening daaraan gekoppel is:
$ git show v1.5
tag v1.5
Tagger: Ben Straub <ben@straub.cc>
Date: Sat May 3 20:29:41 2014 -0700
my signed 1.5 tag
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQEcBAABAgAGBQJTZbQlAAoJEF0+sviABDDrZbQH/09PfE51KPVPlanr6q1v4/Ut
LQxfojUWiLQdg2ESJItkcuweYg+kc3HCyFejeDIBw9dpXt00rY26p05qrpnG+85b
hM1/PswpPLuBSr+oCIDj5GMC2r2iEKsfv2fJbNW8iWAXVLoWZRF8B0MfqX/YTMbm
ecorc4iXzQu7tupRihslbNkfvfciMnSDeSvzCpWAHl7h8Wj6hhqePmLm9lAYqnKp
8S5B/1SSQuEAjRZgI4IexpZoeKGVDptPHxLLS38fozsyi0QyDyzEgJxcJQVMXxVi
RUysgqjcpT8+iQM1PblGfHR4XAhuOqN5Fx06PSaFZhqvWFezJ28/CLyX5q+oIVk=
=EFTF
-----END PGP SIGNATURE-----
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date: Mon Mar 17 21:52:11 2008 -0700
Change version number
Verifiëring van Merkers (Verifying Tags)
Om 'n ondertekende merker te verifieer, gebruik jy git tag -v <tag-name>.
Hierdie opdrag gebruik GPG om die handtekening te verifieer.
Jy benodig die ondertekenaar se publieke sleutel in jou sleutelring (keyring) sodat dit behoorlik kan werk:
$ git tag -v v1.4.2.1
object 883653babd8ee7ea23e6a5c392bb739348b1eb61
type commit
tag v1.4.2.1
tagger Junio C Hamano <junkio@cox.net> 1158138501 -0700
GIT 1.4.2.1
Minor fixes since 1.4.2, including git-mv and git-http with alternates.
gpg: Signature made Wed Sep 13 02:08:25 2006 PDT using DSA key ID F3119B9A
gpg: Good signature from "Junio C Hamano <junkio@cox.net>"
gpg: aka "[jpeg image of size 1513]"
Primary key fingerprint: 3565 2A26 2040 E066 C9A7 4A7D C0C6 D9A4 F311 9B9A
As jy nie die ondertekenaar se publieke sleutel het nie, kry jy in plaas daarvan so iets:
gpg: Signature made Wed Sep 13 02:08:25 2006 PDT using DSA key ID F3119B9A
gpg: Can't check signature: public key not found
error: could not verify the tag 'v1.4.2.1'
Ondertekening van Vasleggings (Signing Commits)
In meer onlangse weergawes van Git (v1.7.9 en later), kan jy nou ook individuele vasleggings onderteken.
As jy daarin belangstel om vasleggings direk te onderteken in plaas van net die merkers, is al wat jy hoef te doen om 'n -S by jou git commit opdrag te voeg.
$ git commit -a -S -m 'Signed commit'
You need a passphrase to unlock the secret key for
user: "Scott Chacon (Git signing key) <schacon@gmail.com>"
2048-bit RSA key, ID 0A46826A, created 2014-06-04
[master 5c3386c] Signed commit
4 files changed, 4 insertions(+), 24 deletions(-)
rewrite Rakefile (100%)
create mode 100644 lib/git.rb
Om hierdie handtekeninge te sien en te verifieer, is daar ook 'n --show-signature opsie vir git log.
$ git log --show-signature -1
commit 5c3386cf54bba0a33a32da706aa52bc0155503c2
gpg: Signature made Wed Jun 4 19:49:17 2014 PDT using RSA key ID 0A46826A
gpg: Good signature from "Scott Chacon (Git signing key) <schacon@gmail.com>"
Author: Scott Chacon <schacon@gmail.com>
Date: Wed Jun 4 19:49:17 2014 -0700
Signed commit
Daarbenewens kan jy git log opstel om enige handtekeninge wat dit vind na te gaan en hulle in sy afvoer te lys met die %G? formaat.
$ git log --pretty="format:%h %G? %aN %s"
5c3386c G Scott Chacon Signed commit
ca82a6d N Scott Chacon Change the version number
085bb3b N Scott Chacon Remove unnecessary test code
a11bef0 N Scott Chacon Initial commit
Hier kan ons sien dat slegs die laaste vaslegging onderteken en geldig is, en dat die vorige vasleggings nie is nie.
In Git 1.8.3 en later, kan vir git merge en git pull gesê word om te inspekteer en te verwerp wanneer 'n vaslegging saamgesmelt word wat nie 'n betroubare GPG-handtekening dra nie met die --verify-signatures opdrag.
As jy hierdie opsie gebruik wanneer jy 'n tak saamsmelt (merge) en dit bevat vasleggings wat nie onderteken en geldig is nie, sal die saamsmelting nie werk nie.
$ git merge --verify-signatures non-verify
fatal: Commit ab06180 does not have a GPG signature.
As die saamsmelting slegs geldige ondertekende vasleggings bevat, sal die merge opdrag jou al die handtekeninge wys wat hy nagegaan het en dan voortgaan met die saamsmelting.
$ git merge --verify-signatures signed-branch
Commit 13ad65e has a good GPG signature by Scott Chacon (Git signing key) <schacon@gmail.com>
Updating 5c3386c..13ad65e
Fast-forward
README | 2 ++
1 file changed, 2 insertions(+)
Jy kan ook die -S opsie met die git merge opdrag gebruik om die resulterende saamsmeltingsvaslegging self te onderteken.
Die volgende voorbeeld verifieer beide dat elke vaslegging in die tak wat saamgesmelt moet word onderteken is, en onderteken boonop die resulterende saamsmeltingsvaslegging.
$ git merge --verify-signatures -S signed-branch
Commit 13ad65e has a good GPG signature by Scott Chacon (Git signing key) <schacon@gmail.com>
You need a passphrase to unlock the secret key for
user: "Scott Chacon (Git signing key) <schacon@gmail.com>"
2048-bit RSA key, ID 0A46826A, created 2014-06-04
Merge made by the 'recursive' strategy.
README | 2 ++
1 file changed, 2 insertions(+)
Almal Moet Onderteken (Everyone Must Sign)
Om merkers en vasleggings te onderteken is wonderlik, maar as jy besluit om dit in jou normale werkvloei te gebruik, sal jy moet seker maak dat almal in jou span verstaan hoe om dit te doen.
Dit kan bereik word deur almal wat met die bewaarplek werk te vra om git config --local commit.gpgsign true uit te voer, om sodoende outomaties al hul vasleggings in die bewaarplek by verstek te laat onderteken.
As jy dit nie doen nie, sal jy uiteindelik baie tyd daaraan bestee om mense te help uitvind hoe om hul vasleggings te herskryf met ondertekende weergawes.
Maak seker dat jy GPG en die voordele van die ondertekening van dinge verstaan voordat jy dit as deel van jou standaard werkvloei aanneem.