Git
Git on hajautettu versionhallintajärjestelmä, jonka kehityksen aloitti Linus Torvalds Linuxin ytimen kehitystä varten. Se korvasi ytimen kehityksessä suljetun lähdekoodin BitKeeperin.
Käyttö
Seuraavassa käydään läpi Gitin peruskäyttö esimerkin avulla luomalla esimerkkiprojektille "hello" versionhallintajärjestelmä.
Versionhallinnan käyttöönotto
Luodaan ensin muutama tiedosto projektia varten: hello.c (C-kielinen lähdekoodi, ohjelma tulostaa ruudulle yhden rivin tekstiä, kääntyy komennolla gcc hello.c -o hello):
#include <stdio.h> void main() { printf("Hei, maailma\n"); }
README:
Esimerkkiprojekti, jonka avulla opetellaan Gitin käyttöä
Seuraavaksi alustetaan Git ajamalla projektin hakemistossa komento
$ git init Initialized empty Git repository in .git/
Kuten Git ilmoittaa, komento luo työhakemistoon piilotetun alihakemiston .git jonne Git tallentaa kaiken tarvitsemansa datan. Tämän hakemiston sisältöön ei tarvitse kiinnittää huomiota.
Tiedostojen lisääminen
Seuraavaksi lisätään versionhallinnan piiriin alussa luodut tiedostot komennolla git add:
$ git add .
Piste tarkoittaa, että versionhallinnan piiriin lisätään kaikki hakemistossa olevat tiedostot. Yksittäisten tiedostojen lisääminen on myös mahdollista:
$ git add hello.c README
Nyt kun Git tietää, että tällaisia tiedostoja on muokattu, on aika tehdä ensimmäinen "commit", eli siirretään tiedostojen uusin tila versionhallintaan yhdeksi commitiksi:
$ git commit
Komento avaa ympäristömuuttujassa EDITOR määritettyyn tekstieditoriin tiedoston, jossa #-merkeillä alkavilla riveillä lyhyesti kuvattu tehtävät muutokset. Tässä tapauksessa ilmoitetaan uusista tiedostoista hello.c ja README. Tiedostoon voidaan kirjoittaa lyhyehkö lokiin tallentuva kuvaus tehdyistä muutoksista. Risuaidalla alkavat rivit eivät päädy kommenttiin. Kun kommentti on kirjoitettu suljetaan tekstieditori, jolloin muutokset viedään versionhalintaan eli tapahtuu commit:
Created initial commit 9c5cc04: Ensimmäinen commit 2 files changed, 5 insertions(+), 0 deletions(-) create mode 100644 README create mode 100644 hello.c
Nyt lokista nähdään, että projektiin on tehty yksi muokkaus:
$ git log commit 9c5cc04010c91cf560e097c69e5c53f6a51d30ef Author: Osku Ohjelmoija <osku@linux.fi> Date: Fri Oct 23 23:39:56 2009 +0300
Ensimmäinen commit
Lokiin ilmestyvä nimi ja sähköpostiosoite voidaan asettaa komennoilla
$ git config --global user.name "Oma Nimi" $ git config --global user.email oma@sähköposti.osoite
Tiedostojen muokkaaminen
Nyt kun ensimmäinen commit on tehty voidaan alkaa kehittämään projektia jolloin näemme, miten Gitin kanssa toimitaan tiedostojen muuttuessa. Tiedosto hello.c ei ole standardin mukainen eikä se käänny suoritettavaksi ohjelmaksi. Korjataan tämä ongelma muuttamalla tiedosto muotoon hello.c
#include <stdio.h> int main() { printf("Hei, maailma\n"); return 0; }
Tässä on siis muutettu toisella rivillä esiintyvä void muotoon int ja lisätty toiseksiviimeinen rivi return 0;.
Nyt tehdyt, vielä committoimattomat muutokset nähdään komennolla
$ git status # On branch master # Changed but not updated: # (use "git add <file>..." to update what will be committed) # # modified: hello.c
Eli huomataan, että tiedostoa hello.c on muokattu mutta ei vielä commitoitu. Commit tehdään kertomalla Gitille ensin, että tiedostoa on muokattu, komennolla
$ git add hello.c
ja tekemällä commit tämän jälkeen kuten aluksi
$ git commit
Edellä olevat vaiheet voi myös yhdistää ja suorittaa yhdellä komennolla
$ git commit -a
joka commitoi kaikkiin tiedostoihin tehdyt muutokset.