Projekti

Yleinen

Profile

Git-komentoapuri

  • Suositellaan asentamaan tig versionhallinnan tarkastelua varten. Käytetään git-kansiossa komennolla tig.
    sudo apt-get install tig
    

tig in Ubuntu 16.04

Ubuntu 16.04 asentaa oletuksena version 2.0.2 (tarkistettu viimeksi 4.5.2017). Tässä versiossa on ongelmia suorittaa jatkohaku, minkä takia haku ei palauta enää tuloksia, vaikka oikeasti niitä olisi jäljellä. Ratkaisuna on päivittää tig versioon 2.2.1. Päivitys onnistuu seuraavasti:

cd
wget https://github.com/jonas/tig/releases/download/tig-2.2.1/tig-2.2.1.tar.gz
tar -xzf tig-2.2.1.tar.gz
cd tig-2.2.1
make configure
./configure
make
sudo make install

...jonka jälkeen kirjautumalla uudeelleen uusi tig versio pitäisi olla asennettuna. Tarkista versio komennolla
tig -v

Branches (versiohaarat)

https://git-scm.com/docs/git-branch

  • Tarkastele paikallisia versiohaaroja(branch). Näyttää myös missä haarassa olet tällä hetkellä
    git branch
    
  • Uuden versiohaaran luonti nykyisestä haarasta
    git branch <branchname>
    
  • Versiohaaraan siirtyminen
    git checkout <branchname>
    
  • Paikallisen versiohaaran poistaminen
    git branch -d <branchname>
    

Commit

https://git-scm.com/docs/git-commit

  • Tarkastele kommitoitavia tiedostoja. Git näyttää myös Untracked-tiedostot, jotka ovat hakemistossa mutta ne puuttuvat versionhallinnasta.
    git status
    
  • Lisää tiedosto kommitointia varten
    git add <filename>
    
  • Vastavuoroisesti tiedostoja voi poistaa kommitointilistalta.
    git rm <filename>
    
  • Kommitoi tiedosto. Kommittiin lisätään viesti, joka avautuu seuraavaksi. Kun olet tallentanut viestin versiohaara päivittyy lisäämälläsi muutoksella. Viestin voi lisätä suoraan komentoon -m parametrillä.
    git commit
    git commit -m "BUG1234, this is a new feature" 
    

Versiohaarojen yhdistäminen ja työntäminen Githubiin

https://git-scm.com/docs/git-rebase

Koska monta henkilöä saattaa tehdä samaan aikaan töitä samassa repositoriossa, niin versiohaarojen käyttö on välttämätöntä, jotta ominaisuutta voidaan kehittää irrallaan master-versiosta. Varmista, että kun aloitat työskentelemään uutta ominaisuutta niin teet versiohaaran viimeisimmästä master-versiosta. Ominaisuudet täytyy tuoda jossain vaiheessa masteriin, joten sitä varten käytetään rebase-komentoa.

  1. Mene Koha-Suomen nykyiseen master-branchiin ja hae viimeisimmät muutokset Githubista.
    git checkout master
    git pull
    
  2. Siirry branchiin, jonka ominaisuuden haluat siirtää masteriin. Varmista, että olet kommitoinut muutokset jotka haluat lisätä masteriin.
    git checkout <branchname>
    git status
    (git add <filename>)
    (git commit)
    
  3. Jos sinulla on useampi kommitti liittyen samaan ominaisuuteen niin yhdistä ne.
    tig (kopioi omaisuudesta edellisen kommitin hash, sulje tig)
    git rebase -i <hash> (muuta muut paitsi ensimmäinen pick arvo squash arvoksi)
    
  4. Tuo masteriin tehdyt muutokset branchiin rebasella. Niiden pitäisi siirtyä branchissä juuri ennen omaa kommittiasi.
    git rebase <branchname> master
    
  5. Nyt kun versiohaaran kärki on muuten sama kuin masterin, voit tuoda sen masterin päälle.
    git rebase master <branchname>
    
  6. Nyt master pitäisi olla siinä kunnossa, että voit työntää sen Githubiin. Samalla voit antaa komennon seurata muutoksia Githubin branchissä, sen pitäisi verrata paikallisen ja Github branchin versioita ja kertoa onko haettavaa.
    git push origin master
    git push --set-upstream origin master
    

Revert

Jos sinun täytyy poistaa kommitti, niin se tehdään revert-komennolla. Useamman kommitin poistaminen täytyy tehdä käänteisessä järjestyksessä, jotta riippuvuudet purkautuvat.

git revert <hash>

Reset

https://git-scm.com/docs/git-reset

Joskus täytyy palauttaa kommitteja vanhempaan version. Tätä varten käytetään reset-komentoa.
  • Jos haluat paikallisen versiohaaran vastaamaan Githubissa olevaa, voit resetoida sen.
    git checkout master
    git fetch origin
    git reset --hard origin/master (hard tarkoittaa, että indeksi ja tiedostot muutetaan samaksi kuin originilla.)
    
  • Reset-komentoa voi käyttää myös, jos halutaan palata takaisin johonkin kommittiin ja pyyhkiä muutokset siitä alkaen.
    git reset --soft <commit> (soft jättää muutokset kommitoitavaan tilaan.)
    

Forkatun yhteisö-Kohan päivittäminen GitHubin

Me olemme forkanneet GitHubin Koha-yhteisön Git-repon.
Ajoittain alkuperäisen repon muutokset pitää päivittää meidän forkkiimme.
Sitten meidän omat muutoksemme rebasetetaan siihen päälle.

http://stackoverflow.com/questions/13163828/github-fork-fetch-all-the-changes-from-the-original-repo#13164182

git checkout master
git remote add upstream https://github.com/Koha-Community/Koha.git
git fetch upstream
git reset --hard upstream/master
git checkout kohasuomi-piloting
git rebase master

Sitten korjataan merge-konflikteja ad-infinitum :)

Lopuksi muista git push!

Uusi ominaisuus ja pull request

Tee uusi branch viimeisimmästä masterista.

git branch <branchname>

Siirry uuteen branchiin.

git checkout <branchname>

Lisää ominaisuus branchin huipulle. Kommitoi!

git add <path>
git commit

Vaihtoehtona tuo cherry-pickillä ominaisuus jostain muusta branchistä.

git cherry-pick <sha1>

Työnnä uusi branchi Githubiin. Github luo automaattisesti uuden branchin.

git push origin <branchname>

Mene Githubin repositorioon ja paina "New pull request". Tulee näkymä missä vertailua tehdään. Valitse base-kohtaa KohaSuomi/Koha master ja head-kohtaan ominaisuuden branch

Jos master ja oma branchi eroavat paljon tulee virheilmoitus, siksi uusi ominaisuus pitää laittaa uusimman masterin päälle.

Pull requestin koodin korjaaminen

Voit tehdä korjauksen pull requestin branchiin "force"-komennolla. Tee korjaukset, kommitoi ja squashaa kommitit yhteen.

tig (kopioi omaa kommittia edellinen sha1)
git rebase -i sha1
vaihda pick -> squash niiltä kommiteilta, jotka haluat liittää edelliseen

Työnnä muokattu kommitti Githubiin forcella.

git push -f origin <branchname>

Githubin pitäisi ymmärtää korjata koodi myös vireillä olevassa pull requestissa.