Git ja Windows
GITin käsitteitä

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
- 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'
—index = varastoon siirrettävien (versioitavien) tiedostonjen luettelo
—workspace = työtila, työhakemisto (kaikki tiedostot ja versiot löytyvät .git -hakemistosta, jos ne on koneelle haettu (fetch))
—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-repogit 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 valmistagit 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 avaimetYouSourcea
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
vaihdaRel root path
sen levyn juureksi, jossa on git hakemistoja. Ilman tätä vaihetta tulee ongelmia jos tim-hakemisto on esimerkiksiE:
-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
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
Aikaleimat samaksi kuin viimeinen Commit:
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.