-
Notifications
You must be signed in to change notification settings - Fork 1
Viikon 3 paikanpaalla tehtavat
Tutustumme tänään versionhallintaan.
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.
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.
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
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.
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ä.
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.
Lisää tiedostoja, muuta niitä, lisää hakemistoja. Poista kamaa