Muita Git-toimintoja
Tiedostojen jättäminen versionhallinnan ulkopuolelle
Kaikkia projektin tiedostoja ei kannata viedä versionhallintaan.
Yleissääntönä pois jätetään
- kaikki tiedostot, joita projektissa ei tarvita,
- käännöstuotokset ja build-hakemistot,
- generoidut tiedostot,
- työkalujen tuottamat loki- ja väliaikaistiedostot,
- pakettienhallinnan lataamat tiedostot ja
- henkilökohtaiset konfiguraatiotiedostot.
Repositorioon pitää viedä kaikki sellaiset tiedostot, joita tarvitaan kehittämiseen. Jos uusi kehittäjä kloonaa repositorion, hänen pitäisi pystyä jatkamaan kehitystä siitä.
Luottamuksellinen tieto
Versionhallintaan ei pitäisi viedä luottamuksellisia tietoja kuten käyttäjätunnuksia, salasanoja ja järjestelmäkonfiguraatioita. Jos ne ovat versionhallinnassa ja viedään etärepositoryyn, ne ovat kaikkien niiden nähtävissä, joilla on repositoriaan lukuoikeus.
Luottamuksellisia tietoja kuitenkin tarvitaan järjestelmien kehittämisessä esimerkiksi tietokantayhteyden muodostamiseen. Tällöin on tehtävä jokin ratkaisu, jolla luottamukselliset tiedot tuodaan järjestelmään jotenkin toisin.
Ratkaisu voi olla esim.
- Luottamukselliset tiedot ovat konfiguraatiotiedostossa, jota ei viedä versionhallintaan
- Luottamukselliset tiedot luetaan ympäristömuuttujista
Tällöin kehittäjä antaa paikallisesti luottamukselliset tiedot.
Ignore-säännöt
Git:lle voi määrittää sääntöjä, mitkä tiedostot se jättää huomioimatta. Säännöt määritetään .gitignore
-tiedostoon
Yleensä projektilla on yksi .gitignore
-tiedosto projektin juurihakemistossa. Se vaikuttaa siihen hakemistoon, jossa se on sekä rekursiivisesti kaikkiin alihakemistoihin.
Esimerkkejä .gitignore-sääntöjen laatimisesta
Kommenttirivit alkavat #
-merkillä. Tyhjät rivit jätetään huomiotta. Normaalit korvaus-patternit (esim. *
) toimivat.
Esimerkkejä:
# Jätä huomiotta kaikki tiedostot, jotka päättyvät tilde-merkkiin (~)
*~
# Jätä huomiotta kaikki .log-tiedostot
*.log
# Jätä huomiotta kaikki .o- ja .a-tiedostot
*.[oa]
# Jätä huomiotta kaikki build-hakemistot missä tahansa hakemistossa
build/
# Jos sääntö alkaa /-merkille, sitä ei sovelleta alihakemistoihin:
# Jätä huomiotta vain tässä hakemistossa oleva temp-hakemisto
/temp
# Sääntöön voi tehdä poikkeuksen !-merkillä:
# Jätä huomiotta kaikki .log-tiedostot paitsi change.log
*.log
!change.log
GitHubilla on laaja valikoima .gitignore-malleja erilaisille projekteille. Niistä saat hyvän lähtökohdan oman projektisi konfigurointiin (https://github.com/github/gitignore).
Huomiotta jätetyn tiedoston poistaminen
Joskus repositorioon lipsahtaa jotain sellaista, jonka ei sinne olisi pitänyt mennä, koska .gitignore
-tiedostosta puuttuu sääntö, joka olisi pitänyt sinne laatia.
Tällöin voidaan poistaa tiedosto Git-hallinnasta:
Tiedosto merkitään poistettavaksi hakemistosta seuraavassa commitissa, valitsin--cached
kuitenkin säilyttää sen työtilassa. Tiedosto on nyt työhakemistossasi untracked
-tilassa, voit nyt lisätä .gitignore-säännön ja tehdä commitin, jossa tiedoston poisto talletetaan.
Huom! Tiedoston vanhat versiot kuitenkin jäävät historiaan. Jos haluat poistaa ne sieltäkin, on muutettava historiaa, mikä on aina riskialtista. Perehdy huolellisesti dokumentaatioon, jos lähdet sitä tekemään.
Tarpeettomien tiedostojen poistaminen työtilasta
Komento clean
poistaa kaikki untracked
-tiedostot, joita ei ole erikseen mainittu .gitignoressa. Sillä voit puhdistaa työhakemiston turhista tiedostoista, joita ei tarvita repositoryssä eikä muutenkaan.
Koska tämä komento poistaa tiedostoja, on hyvä ensin tarkistaa, mitä clean tekisi:
Kun olet varma, että poistettavat tiedostot todella ovat turhia, voit ajaa komennon
Komennolla on myös interaktiivinen moodi, jossa aina kysytään, mitä tehdään:
Tagit
Versiohistoriaan voidaan kirjata muistiin tiettyjä nimettyjä versioita. Tällaisia ovat tyypillisesti järjestelmän julkaisuversiot (esim v1.0.3).
Git-järjestelmässä tämä tehdään toiminnolla tag
. Tagit ovat viittauksia tiettyihin talletuksiin, ja niihin voidaan kirjata metatietoa kuten talletukseen (annotated tag):
Tagit voi listata komennolla tag
. Tagin tiedot voi listat komennolla show
:
Tagin voi asettaa mihin tahansa talletukseen myöhemminkin:
Tagit etärepositorioissa
Tageja ei viedä etärepositoryyn push-operaatiolla automaattisesti vaan ne pitää viedä erikseen. Se tapahtuu samalla tavalla kuin haarojen vienti:
Kaikki tagit saa vietyä kerralla laajentimella --tags
:
Tagi voidaan poistaa laajentimella -d
:
Koska tagit ovat viittauksia talletuksiin siinä kuin muutkin viittaukset, niitä voi käyttää samalla tapaa, esim.