Skip to content

Viikon 3 paikanpaalla tehtavat

Matti Luukkainen edited this page Nov 7, 2016 · 36 revisions

KESKEN, ÄLÄ TEE

Tutustumme tänään versionhallintaan.

Versionhallinta

Mitä tarkoitetaan versionhallinnalla? Lainaus sivulta https://www.atlassian.com/git/tutorials

Version control systems are a category of software tools that help a software team manage changes to source code over time. Version control software keeps track of every modification to the code in a special kind of database. If a mistake is made, developers can turn back the clock and compare earlier versions of the code to help fix the mistake while minimizing disruption to all team members.

Vaikka ylläoleva puhuu versionhallinnasta ohjelmistotiimien yhteydessä, kannattaa versionhallintaa käyttää oikeastaan yhdenkin hengen projekteissa ja muunkinlaisen materiaalin kuin koodin hallinnoimiseen. Esim. tämän kurssin kaikki materiaali on versionhallinnassa.

Nykyään suosituin versionhallintaohjelmisto on git. Tutustumme tänään gitin alkeisiin.

Gitin alkeet

own shit

mluukkai@melkinpaasi:~/otm_viikko3$ git commit -m"tiedosto.txt luotu"
[master (root-commit) 0e12cfa] tiedosto.txt luotu
 Committer: Luukkainen Matti 
Your name and e-mail address were configured automatically, based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:

    git config --global user.name "Your Name"
    git config --global user.email [email protected]

After doing this, you may fix the identity used for this commit with:

    git commit --amend --reset-author

 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 tiedosto.txt

Avaa terminaali ja luo sinne sopiva hakemisto. Mene hakemistoon.

repositorio

Luodaan hakemistosta paikallinen git-repositorio antamalla komento git init

Git ilmoittaa alustaneensa repositorion:

mluukkai@melkinpaasi:~/otm_viikko3$ git init
Initialised empty Git repository in /home/ad/fshome4/u4/m/mluukkai/Linux/otm_viikko3/.git/

Jos katsot hakemiston sisältöä komennolla ls -la huomaat, että hakemiston sisälle on ilmestynyt hakemisto .git. Git käyttää luotua hakemistoa pitääkseen kirjaa repositorioon talletetuista tiedostoista.

Luo hakemistoon tiedosto nimeltään tiedosto.txt, esim. komennolla touch. Luotuasi tiedoston, suorita komento git status

mluukkai@melkinpaasi:~/otm_viikko3$ touch tiedosto.txt
mluukkai@melkinpaasi:~/otm_viikko3$ git status
On branch master

Initial commit

Untracked files:
  (use "git add ..." to include in what will be committed)

	tiedosto.txt

nothing added to commit but untracked files present (use "git add" to track)
mluukkai@melkinpaasi:~/otm_viikko3$

Git ilmoittaa, että on olemassa tiedosto, joka on tilassa untracked, eli tiedostoa ei ole lisätty versionhallinnan pariin.

Kuten komennon tuloste kertoo, tiedoston lisääminen gitin alaisuuteen (...to include in what will be committed) tapahtuu komennolla git add tiedosto.txt

Suorita komennon jälkeen jälleen < code >git status:

mluukkai@melkinpaasi:~/otm_viikko3$ git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached ..." to unstage)

	new file:   tiedosto.txt

Git kertoo nyt, että tiedosto.txt on niiden muutosten joukossa, jotka voidaan commitoida

commit

Commitoimisella tarkoitetaan tiedostojen ja niihin liittyvien muutosten tallentamista git-repositorioon.

Suoritetaan commitointi antamalla komento git commit -m"tiedosto.txt luotu"

mluukkai@melkinpaasi:~/otm_viikko3$ git commit -m"tiedosto.txt luotu"
[master (root-commit) 0e12cfa] tiedosto.txt luotu
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 tiedosto.txt

Suorita jälleen komento git status

mluukkai@melkinpaasi:~/otm_viikko3$ git status
On branch master
nothing to commit, working directory clean

Git ilmoittaa, että working directory clean, eli hakemistosi on samassa tilassa kuin git-repositorio.

working directory, index/staging, repository

Kun teet muutoksia hakemistosi alla oleviin tiedostoihin (tai hakemistoihin), kohdistuvat muutokset working directoryyn eli työhakemistoon. Tee jokin muutos tiedostoon tiedosto.txt (esim. komennolla gedit-käynnistyvällä graafisella editorilla tai komentoriviltä toimivalla nano-editorilla) sekä luo hakemistoon uusi tiedosto, nimeltään toinen.txt

Suoritetaan git status

mluukkai@melkinpaasi:~/otm_viikko3$ git status
On branch master
Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git checkout -- ..." to discard changes in working directory)

	modified:   tiedosto.txt

Untracked files:
  (use "git add ..." to include in what will be committed)

	toinen.txt

no changes added to commit (use "git add" and/or "git commit -a")

Git ilmoittaa nyt, että uusi tiedosto on untracked ja että aiemmassa tiedostossa on muutoksia jotka eivät ole staged for commit.

Toimitaan ohjeen mukaan eli lisätään muutokset ja uusi tiedosto commitoitavien joukkoon. Molempien tiedostojen yhtäaikainen "addaaminen" onnistuu komennolla git add .

Tarkistetaan taas tilanne koennolla git status

mluukkai@melkinpaasi:~/otm_viikko3$ git status On branch master Changes to be committed: (use "git reset HEAD ..." to unstage)
modified:   tiedosto.txt
new file:   toinen.txt

Sekä muutos että uusi tiedosto ovat nyt valmiina committoitavaksi.

Committointi onnistuu komennolla git commit. Kuten edelliselläkin kerralla, annetaan komennolle parametrina commit-viesti, eli merkkijono, joka kuvaa mitä muutoksia uusi commit tuo edelliseen nähden.

git commit -m"muutos ja lisäys"

Tiedostot ja niihin tehdyt muutokset voivat siis olla gitin suhteen kolmessa eri tilassa. Aluksi tiedostot (tai niihin tehdyt muutokset) ovat vain working directoryssä ja git ei noteeraa niitä ennen kun ne lisätään komennolla git add. Tämän jälkeen tiedostot ovat valmiina commitoitavaksi. Gitin terminologian mukaan valmiina committoitavaksi olevat tiedostot ovat "staging"-alueella. Komento git commit siirtää stagingissa olevat muutokset muutokset repositorioon eli luo uuden "commitin".

Seuraava kuva havainnollistaa sitä, miten tiedoston muutosten tilat vaihtuvat git-komentoja tekemällä.

git commit

Jokainen komennon git commit suorittaminen siis synnyttää repositorioon uuden commitin, eli uuden "tilan". Komennolla git log on mahdollista nähdä mitä committeja repositorio sisältää:

mluukkai@melkinpaasi:~/otm_viikko3$ git log
commit 50c786fdc41104cdfe3e60845df40820feb33d40
Author: Matti Luukkainen 
Date:   Mon Nov 7 18:18:19 2016 +0200

    lisäys ja muutos

commit 0e12cfa5de9186eb948ac446c6b3f240ff11189d
Author: Luukkainen Matti 
Date:   Mon Nov 7 16:11:33 2016 +0200

    tiedosto.txt luotu
mluukkai@melkinpaasi:~/otm_viikko3$

Gitin logi kertoo jokaisen commitin ajan, tekijän, viestin ja tunnisteen. Tunnisteita käytetään, jos on esim tarvetta palata johonkin vanhan commitin tilaan.

tehtäviä

Lisää tiedostoja, muuta niitä, lisää hakemistoja. Poista kamaa

.gitignore

Github

remote add

push

git clone