Ero sivun ”Git” versioiden välillä
Siirry navigaatioon
Siirry hakuun
Uudet osiot: muutosten allekirjoittaminen ja allekirjoitusten tarkistaminen
(huomio historian muuttamisesta) |
(Uudet osiot: muutosten allekirjoittaminen ja allekirjoitusten tarkistaminen) |
||
(9 välissä olevaa versiota 3 käyttäjän tekeminä ei näytetä) | |||
Rivi 5: | Rivi 5: | ||
| lisenssi=[[GPL]]v2 | | lisenssi=[[GPL]]v2 | ||
| käyttöliittymä=teksti | | käyttöliittymä=teksti | ||
| kotisivu=[ | | kotisivu=[https://git-scm.com/ git-scm.com] | ||
| lähdekoodi=[https://github.com/git/git github.com/git/git] | |||
}} | }} | ||
Rivi 22: | Rivi 23: | ||
Luodaan ensin muutama tiedosto projektia varten: | Luodaan ensin muutama tiedosto projektia varten: | ||
hello.c ([[C]]-kielinen lähdekoodi, ohjelma tulostaa ruudulle yhden rivin tekstiä, kääntyy komennolla <tt>[[gcc]] hello.c -o hello</tt>): | hello.c ([[C]]-kielinen lähdekoodi, ohjelma tulostaa ruudulle yhden rivin tekstiä, kääntyy komennolla <tt>[[gcc]] hello.c -o hello</tt>): | ||
< | <syntaxhighlight lang="C"> | ||
#include <stdio.h> | #include <stdio.h> | ||
void main() { | void main() { | ||
printf("Hei, maailma\n"); | printf("Hei, maailma\n"); | ||
} | } | ||
</ | </syntaxhighlight> | ||
README: | README: | ||
Esimerkkiprojekti, jonka avulla opetellaan Gitin käyttöä | Esimerkkiprojekti, jonka avulla opetellaan Gitin käyttöä | ||
Rivi 68: | Rivi 69: | ||
Nyt kun ensimmäinen commit on tehty voidaan alkaa kehittämään projektia jolloin näemme, miten Gitin kanssa toimitaan tiedostojen muuttuessa. Tiedosto <tt>hello.c</tt> ei ole standardin mukainen eikä se [[kääntäminen|käänny]] suoritettavaksi ohjelmaksi. Korjataan tämä ongelma muuttamalla tiedosto <tt>hello.c</tt> muotoon | Nyt kun ensimmäinen commit on tehty voidaan alkaa kehittämään projektia jolloin näemme, miten Gitin kanssa toimitaan tiedostojen muuttuessa. Tiedosto <tt>hello.c</tt> ei ole standardin mukainen eikä se [[kääntäminen|käänny]] suoritettavaksi ohjelmaksi. Korjataan tämä ongelma muuttamalla tiedosto <tt>hello.c</tt> muotoon | ||
< | <syntaxhighlight lang="C"> | ||
#include <stdio.h> | #include <stdio.h> | ||
int main() { | int main() { | ||
Rivi 74: | Rivi 75: | ||
return 0; | return 0; | ||
} | } | ||
</ | </syntaxhighlight> | ||
Tässä on siis muutettu toisella rivillä esiintyvä <tt>void</tt> muotoon <tt>int</tt> ja lisätty loppuun rivi <tt>return 0;</tt>. | Tässä on siis muutettu toisella rivillä esiintyvä <tt>void</tt> muotoon <tt>int</tt> ja lisätty loppuun rivi <tt>return 0;</tt>. | ||
Rivi 292: | Rivi 293: | ||
Paljas repository toimii myös projektin varmuuskopiona, mikäli oma työhakemistosi syystä tai toisesta tuhoutuu. | Paljas repository toimii myös projektin varmuuskopiona, mikäli oma työhakemistosi syystä tai toisesta tuhoutuu. | ||
=== Muutosten allekirjoittaminen === | |||
Kuten osiosta versionhallinnan käyttöönotto mahdollisesti huomattiin, Git ei tarkista sille annettua nimeä ja sähköpostia. Mikäli committin tai tagin tunnistaminen on tärkeää, se on allekirjoitettava joko [[GnuPG|GPG-avaimella]] tai alkaen Gitin versiosta 2.34 [[SSH#Tunnistaminen_avainparilla|SSH-avaimella]]. | |||
Ensin kerrotaan gitille allekirjoitusavain, GPG:n tapauksessa tämä on avaimen pitkä ID, SSH:lla tämä on julkinen avain tai polku siihen, esimerkiksi | |||
$ git config --global user.signingkey ~/.ssh/id_ed25519.pub | |||
SSH:n tapauksessa gitille täytyy myös kertoa SSH:n olevan käytössä | |||
$ git config --global gpg.format ssh | |||
Nyt committia tai tagia luodessa voidaan määrittää allekirjoitus <tt>-S</tt> -lipulla | |||
$ git commit -S -a -m "Luotiin allekirjoitettu commit" | |||
$ git tag -S v2.1 | |||
Gitin voi myös määrittää allekirjoittamaan commitit ja tagit automaattisesti: | |||
$ git config --global git commit.gpgsign true | |||
$ git config --global tag.forceSignAnnotated true | |||
$ git config --global git push.gpgsign if-asked | |||
==== Allekirjoitusten tarkistaminen ==== | |||
Gitillä on monta komentoa allekirjoitusten tarkistamiseksi, esimerkiksi aiemmin mainittu <tt>git log</tt>, jonka voi käskeä näyttämään allekirjoituksen: | |||
$ git log --show-signature | |||
[[GnuPG|GPGtä]] käytettäessä tämä noudattaa sen luottamusmallia, mutta SSH:lle on tehtävä oma <tt>authorized_signers</tt> -tiedostonsa ja kerrottava git:ille mistä se löytyy. Tämä sisältää käyttäjän | |||
sähköposti-osoitteen (tai osan sitä, <tt>*</tt> merkki sallii kaiken, julkisen avaimen ja mahdollisesti kommentin. | |||
Lisätään esimerkiksi Oskun julkinen avain: | |||
$ echo "osku@linux.fi ssh-ed25519 pitkaMerkkijonoJossaOnVahanKaikkeaMuutaKuinAakkosia" >> ~/.ssh/authorized_signatures | |||
Kerrotaan Gitille mistä tämä tiedosto löytyy | |||
$ git config --global gpg.ssh.allowedSignersFile ~/.ssh/allowed_signers | |||
Nyt git kertoo | |||
$ git log | |||
commit 9c5cc04010c91cf560e097c69e5c53f6a51d30ef | |||
Good "git" signature for osku@linux.fi with AVAIMENTYYPPI key SHA256:avaimenSormenjälkiSHA256Tiivisteenä | |||
Author: Osku Ohjelmoija <osku@linux.fi> | |||
Date: Fri Oct 23 23:39:56 2009 +0300 | |||
== Graafisia Git-käyttöliittymiä == | == Graafisia Git-käyttöliittymiä == | ||
Rivi 308: | Rivi 352: | ||
*[[CVS]] | *[[CVS]] | ||
*[[Darcs]] | *[[Darcs]] | ||
*[[Gitea]] | |||
*[[GitHub]] | |||
*[[GitLab]] | |||
*[[Mercurial]] | *[[Mercurial]] | ||
*[[Subversion]] | *[[Subversion]] | ||
==Aiheesta muualla== | ==Aiheesta muualla== |