Git-komentoapuri¶
- Table of contents
- 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.
- Mene Koha-Suomen nykyiseen master-branchiin ja hae viimeisimmät muutokset Githubista.
git checkout master git pull
- 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)
- 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)
- Tuo masteriin tehdyt muutokset branchiin rebasella. Niiden pitäisi siirtyä branchissä juuri ennen omaa kommittiasi.
git rebase <branchname> master
- Nyt kun versiohaaran kärki on muuten sama kuin masterin, voit tuoda sen masterin päälle.
git rebase master <branchname>
- 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.
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.