August 18, 2019
  • 2:15 pm NameCheap – Kaupallisen SSL-sertifikaatin uusiminen
  • 9:48 pm Ubuntu Server 18.04.3 – Tietoturvapäivitysten automatisointi
  • 1:54 am Tuotantopalvelimen päivitys – Ubuntu Server 16.04 -> 18.04
  • 11:15 pm Kotiverkon toteutus: Ubiquiti EdgeRouter X, Ubiquiti UniFi UAP-AC-Lite, Netgear GS108E-300PES – VLAN-verkkojen ja palomuurisääntöjen konfigurointi
  • 4:00 am Windows 10 – Järjestelmätyökalujen ja yleisten komentojen lunttilappu

Git on yleisimmin käytetty versionhallintatyökalu. Asensin sen projektin virallisilta sivulta: https://git-scm.com/.

Suoritin asennusohjelman. Ensiksi hyväksyin käyttöehdot:

Valitsin asennussijainnin:

Valitsin asennettavat komponentit. Jätin valinnat oletuksille:

Valitsin Start-menu sijainnin:

Valitsin Gitin oletustekstieditoriksi Linuxista tutun Nanon:

Valitsin asetuksen, joka salli Gitin käyttämisen muistakin komentoriviohjelmista:

Suoritettavaksi SSH-ohjelmaksi valitsin Gitin mukana tulevan OpenSSH:n:

SSL/TLS kirjastoksi valitsin OpenSSH:n kirjaston:

Valitsin vaihtoehdon, joka soveltui Windowsille paremmin:

Valitsin oletus terminaaliemulaattoriksi MinTTY:n, vaikkakin käytän Gittiä lähinnä PowerShellistä:

Jätin tietojärjestelmän välimuistittamisen ja Git tunnistetietojen hallinnan valituiksi:

Ajoin Gittiä PowerShellissä. Ensiksi määritin käyttäjätunnukseni ja sähköpostini. Nämä ovat ne tiedot, jotka näkyvät Gitin versiolokeissa, kun teet muutoksia. Niiden ei tarvitse vastata esimerkiksi GitHub-tunnuksiasi, mutta näiden tietojen perusteella muut projektin jäsenet tietävät, kuka muutokset on tehnyt. Kannattaakin siis käyttää omaa nimeään tai GitHubin käyttäjätunnusta.

git config --global user.name "PyhaMarkus"
git config --global user.email "markus.pyharanta@mapy.fi"

Git configuraation voi tarkistaa myöhemmin komennolla: git config –list. Jos haluaa nähdä ainoastaan käyttäjään liittyvät määritykset, voi ajaa PowerShellissä:

git config --list | Select-String "user"

Tein uuden paikallisen testiprojektin. Projektikansio luodaan siihen hakemistoon, jossa olet komennon suoritettuasi.

git init test_project

Tulos:

Initialized empty Git repository in C:/Users/Markus/test_project/.git/

Jos taas olisin luonut jo valmiin kansion, jota haluan käyttää projektikansiona, voisin vain ajaa seuraavan komennon kyseisessä hakemistossa:

git init

Vastauksesta huomataan, että Git loi test_project-kansion sisälle uuden piilotetun .git-kansion. Se luodaan aina automaattisesti git init -komennon yhteydessä projektin juurihakemistoon.

Jos ajan projektikansiossa komennon:

git status

Saan vastaukseksi:

On branch master
nothing to commit, working tree clean

Vastaus tarkoittaa sitä, että projektin työhakemisto on puhdas, eikä Git havaitse jäljitettyjä tai jäljittämättömiä tiedostoja. Jäljitetyt tiedostot ovat niitä, jotka olivat mukana viimeisimmässä tilannekuvassa (muokattuja tai muokkaamattomia). Jäljittämättömät tiedostot ovat taas niitä, jotka eivät olleet mukana edellisessä tilannekatsauksessa.

Jos taas suoritan status -komennon hakemistossa, joka ei ole Git-projekti:

C:\Users\Markus> git status
fatal: not a git repository (or any of the parent directories): .git

Git toteaa, ettei kyseinen hakemisto ole Git-projekti.

Siirryin uuteen hakemistoon:

cd .\test_project\

Tein hakemistoon testitiedoston hello.txt, jonka sisään kirjoitin “Hello World!”. Komennossa $hello on muuttuja, joka pitää sisällään merkkijonon “Hello World!”, ja Set-Content cmdlet-komento lisää sen muuttujan hello.txt-tiedostoon.

$hello = "Hello World!" | Set-Content "hello.txt"

tai lyhyemmin:

$hello = "Hello World!" > hello.txt

Tiedoston sisällön näkee Get-Content cmdletillä tai Linuxista tutulla cat-komennolla. Iso osa Linuxin komennoista toimii muutenkin PowerShellissä.

Get-Content hello.txt
Hello World!

tai lyhyemmin:

cat hello.txt
Hello World!

Jos nyt taas ajan git status -komennon, näen että Git havaitsee jäljittämättömän tiedoston hello.txt.

PS C:\Users\Markus\test_project> git status
On branch master

No commits yet

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

         hello.txt

nothing added to commit but untracked files present (use "git add" to track)

Jotta Git alkaisi jäljittämään sitä, lisäsin tiedoston versionhallintaan git add -komennolla. Kyseinen komento ei kuitenkaan oikeasti lisää sitä vielä projektin repositorioon pysyvästi.

git add hello.txt

Jos tarkistan statuksen nyt:

PS C:\Users\Markus\test_project> git status
On branch master

No commits yet

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

         new file: hello.txt

Huomaan, että tiedosto on nyt jäljitetty ja valmisteltu. Jotta tiedosto sisällytetään pysyvästi projektiin, tulee ajaa git commit -komento.

Viimeistelin komennolla:

git commit -m "My first commit"

Parametri -m mahdollistaa muistiinpanon lisäämisen committiin, ja se on suositeltavaa.

Vastaus:

[master (root-commit) 1afe8a3] My first commit
 1 file changed, 1 insertion(+)
 create mode 100644 hello.txt

Nyt jos ajan git commit-komennon jälkeen git statuksen:

PS C:\Users\Markus\test_project> git status
On branch master
nothing to commit, working tree clean

Mitään tiedostoja ei havaita, sillä ne on jo sisällytetty pysyvään projektiversioon.


Käyttö GitHubin kanssa

Ensiksi varmistin, että käyttämäni sähköposti ja käyttäjätunnus vastaa GitHub profiilini vastaavia.

git config --global user.name "PyhaMarkus"
git config --global user.email "markus.pyharanta@gmail.com"

Sitten konfiguroin Gitin muistamaan GitHub salasanan tunnin ajan, jotta sitä ei tarvitse koko ajan syöttää.

git config --global credential.helper "cache --timeout 3600"

Olin jo luonut uuden repositorion GitHubiin, joten ensiksi kloonaan sen paikalliselle koneelleni:

git clone https://github.com/PyhaMarkus/whoami.git

Tulos:

Cloning into 'whoami'...
remote: Enumerating objects: 65, done.
remote: Counting objects: 100% (65/65), done.
remote: Compressing objects: 100% (61/61), done.
remote: Total 65 (delta 20), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (65/65), done.

Siirryin kloonaamaani hakemistoon:

PS C:\Users\Markus> cd .\whoami\

Tein muutoksia tiedostoihin, jonka jälkeen lisäsin ne versionhallintaan:

git add .

Tulos:

warning: LF will be replaced by CRLF in js/LICENSE.md.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in js/particles.js.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in js/particles.min.js.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in json/particles.json.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in json/particlesjs-config.json.
The file will have its original line endings in your working directory

Ja suoritin commit-komennon, jotta muutokset sisällytetään Git-projektiin:

git commit

Tulos:

[master d82ca3a] Updated whoami
4 files changed, 405 insertions(+), 402 deletions(-)
rewrite css/responsive.css (62%)
rewrite index.html (80%)

Sitten hyvätapaisesti varmistin, ettei GitHub-repositorioon ole tehty muutoksia sillä aikaa, kun tein muokkauksia paikallisesti:

git pull

Tulos:

Already up to date.

Lopuksi puskin tekemäni muutokset GitHubiin komennolla:

git push

Git pyysi GitHub-tunnuksiani. Syötin ne, jonka jälkeen sain tulokseksi:

Enumerating objects: 15, done.
Counting objects: 100% (15/15), done.
Delta compression using up to 8 threads
Compressing objects: 100% (8/8), done.
Writing objects: 100% (8/8), 2.90 KiB | 1.45 MiB/s, done.
Total 8 (delta 5), reused 0 (delta 0)
remote: Resolving deltas: 100% (5/5), completed with 5 local objects.
To https://github.com/PyhaMarkus/whoami.git
15a0a3f..d82ca3a master -> master

Muutokset GitHub-repositorioon oli nyt tehty.


TÄTÄ DOKUMENTTIA SAA KOPIOIDA JA MUOKATA GNU GENERAL PUBLIC LICENSE (VERSIO 3 TAI UUDEMPI) MUKAISESTI. HTTP://WWW.GNU.ORG/LICENSES/GPL.HTML
MARKUS PYHÄRANTA
Markus Pyhäranta

RELATED ARTICLES
LEAVE A COMMENT