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.