# timOhjeet

Git ja Windows

GITin käsitteitä

Gitin yleisimmät komennot
Gitin yleisimmät komennot

Hieman harhaanjohtava kuva:

  • pull on periaatteessa sama kuin fetch + merge, eli fetchin jälkeen local-varastosta tulisi johtaa merge-nuoli työkansioon. Ja merge on todella yleinen komento.
  • checkout-komentoa käytetään haarojen (branch) yhteydessä, mitä kuvassa ei näytetä.
  • Haarat auttavat kehityksessä ja kokeilussa hurjasti, eikä niiden käyttö gitissä ole "kallista", tai hankalaa, jos merge on hallussa.
  • https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell
09 Feb 16
# umlGIT
  • Workspace: lokaalin koneen levyllä olevat tiedostot
  • Index - ??? .git hakemiston tiedostot???
  • local repository - omassa koneessa oleva???
  • remote repository - toisessa koneessa oleva ???

repository = 'tietovarasto', tässä riittää pelkkä 'varasto'

10 Feb 16

index = varastoon siirrettävien (versioitavien) tiedostonjen luettelo

10 Feb 16

workspace = työtila, työhakemisto (kaikki tiedostot ja versiot löytyvät .git -hakemistosta, jos ne on koneelle haettu (fetch))

10 Feb 16

Windows - virtuaalikoneen palvelin

Tässä dokumentissa kerrotaan millä tavalla voit työskennellä jos kehität osaksi Windows-koneessa ja osaksi Windows-koneen sisällä olevassa virtuaalikoneessa (vaikka Ububtu).

Yksi mahdollisuus on pullata PC:stä virtuaalikoneeseen:

1. GITin käyttö Samba-palvelimen avulla

Tässä vaihtoehdossa käytetään aikaisemman valmiiksi asennettua Samba-palvelinta. Tämä tapa on helpoin jos Samba-levy saatiin mountattua.

1.1 Asentaminen

  • asentaminen on kuvattu aloitusdokumentissa
  • seuraavissa esimerkeissä on oletuksena käytetty:
    • T: - Samba mountattu levy virtualikoneesta (tim3-palvelin)
    • E:\tim - Windows koneen hakemisto jossa on muokattavat tim-koodit (johon on haettu tim-repo git clone git@yousource.it.jyu.fi:tim/tim.git
    • vesal käyttäjätunnus kummassakin koneessa

1.2 Prosessi jatkossa

  • muokkaa kooodia PC-koneessa ja debuggaa PyCharmilla. Kun valmis testattavaksi palvelimessa:

    git commit -m "VIESTI"
  • siirrä työ Linux-koneelle

    pushd T:\
    git pull e:\tim
  • muokkaa ja testaa virtuaalipalvelimessa (tim3). Kun valmista

    git commit -m "VIESTI"
    git push ???
  • ???

2. Linux koneen GIT-"palvelimen" käyttö

Tässä vaihtoehdossa riittää että ssh yhteys toimii Linux-palvelimeen päin.

git remote add tim3 vesal@tim3:sunhakemisto/sungithakemisto (tämä kerran, asettaa vain aliaksen urlille)
git push tim3 master:toinenhaarja

Toinen mahdollisuus on commit omaan koneeseen ja hakea virtuaalikoneeseen sieltä ssh:n yli. Tätä varten tarvitsee omaan koneeseen asentaa tomiva ssh-palvelin.

3. sshd Windowsiin

Tässä vaihtoehdossa joudut asentaaman jonkin ssh-palvelimen Windows koneeseen. Hyöty on se, että Samba-jakoa ei tarvita. Haittana huomattavasti isompi asennustyö.

3.1 ssh-palvelimen asentaminen

  • hae vaikka bitwise ssh server
  • asenna ja käynnistä
  • kun käynnissö ota oikean nurkan pikkunuolesta ohjelman asetukset auki
  • Access contol/Windows accounts välilehdeltä luo uusi käyttäjä (local account jatkossa esimerkeissä vesal)
  • käyttäjän kohdalla etsi Public keys valinta ja siihen:
  • mene Puttyllä tim-palvelimesi hakemistoon ~/.ssh jonne loit aikaan avaimet YouSourcea varten
  • cat id_rsa.pub
  • kopioi koodi ja pastea johonkin editoriin ja talleta johonkin tiedostoon ja sitten hae se tiedosto tähän
  • talleta käyttäjä ja ota Windows Groups kohdassa ryhmä editoitavaksi ja vaihda siinä Initial terminal shell directory levylle jolla pidät git-hakmeistoja.
  • kohdasta Virtual filesystem layout/Mount points vaihda Rel root path sen levyn juureksi, jossa on git hakemistoja. Ilman tätä vaihetta tulee ongelmia jos tim-hakemisto on esimerkiksi E:-levyllä.
  • Windows koneen pysyvään polkuun pitää lisätä GIT:in työkalut jotka ovat esim:
    C:\Program Files (x86)\Git\libexec\git-core

Kokeile komentoja palvelinkoneen shellistä (esimerkki PC:nä vesah3, mountin osoitteeksi laitettu e:\ ja Windowsin puolella tim on hakemistossa e:\tim)

cd /opt/tim
ssh vesal@vesah3  # kokeillaan että ssh toimii, jos ok, niin exit
ssh vesal@vesah3 git-receive-pack "/tim" # jos ei polussa, niin tulee valitus
git pull ssh://vesal@vesah3:/tim
# prosessi-jatkossa-1

3.2 Prosessi jatkossa

  • muokkaa kooodia PC-koneessa ja debuggaa PyCharmilla. Kun valmis testattavaksi palvelimessa:

    git commit -m "VIESTI"
  • mene palvelimeen Puttyllä

    git pull ssh://vesal@vesah3:/tim
  • muokkaa ja testaa palvelimessa. Kun valmista

    git commit -m "VIESTI"
    git push ???
  • ???

Muita komentoja:

Oma repo samaksi kuin etänä:

git rm --cached -r .
git reset --hard

Ok, no sitten se varmaan toki toimii, mutta siinä on se vaara, että nuo muutokset commitoituu vahingossa gittiin. Laita ainakin smartgitissä niiden tiedostojen kohdalla

Local -> Toggle 'Assume Unchanged`

niin et vahingossa committaa niitä muutoksia.

Masterin yhdistäminen haaraan

git rebase --abort
git fetch
git reset --hard origin/ide-languages
git merge origin/master

Linkkejä

Git väittää, että tiedosto(j)a on muutettu, vaikkei ole

Varmista, ettei mitkään TIM-repon tiedostot ole lukittuja (esim. sammuta kontit) ja anna komennot (lähde):

git rm --cached -r .
git reset --hard

Esimerkkikomentoja

Laita muutokset toiseen haaraan

 git push git@yousource.it.jyu.fi:ties343-funktio-ohjelmointi/multiplechoiceplugin.git master:pu/selityskentat 

GIT työkalut ja Windows

Avainten teko

SmartGit

Asennus: http://www.syntevo.com/smartgit/

  • asennna hakemistoon c:

TortoiseGIT

Asennus: https://tortoisegit.org/

Vaihda ssh-asiakas:

  • Hiiren oikealla TortoiseGit/Settings/Network ja sinne
  • C:\devel\SmartGit\git\usr\bin\ssh.exe

Komentorivi

Tarkista komentoriviltä että mikä on GIT_SSH-avaimen arvo

set

Vaihda se tarvittaessa:

set GIT_SSH=C:\devel\SmartGit\git\usr\bin\ssh.exe
setx GIT_SSH C:\devel\SmartGit\git\usr\bin\ssh.exe

Tarvittavia GIT-komentoja

Alimodulien päivitus

git submodule update

Palautus vanhaan tilanteeseen

git reset --hard
git reset --hard origin/master

Luulen että tuo timcan-tipin siirto masteriin menisi näin:

git checkout timcan-tipi  (nähtävästi pitää tehdä pelkkä checkout ilman mitään mergejä...)
git pull
git checkout master
git merge timcan-tipi
(tässä ehkä konfliktin ratkaisu?)
git push

jos tulee tuo konflikti niin pitää kai heittää vielä commit ennen tuota pushia

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.