Tutustu versionhallintaan Gitin avulla
Versiontarkistusjärjestelmiä on erityyppisiä, mutta yleensä ne voidaan luokitella keskitetyiksi ja hajautetuiksi. Viime vuosina (osittain DevOpsin kasvavan suosion vuoksi) jälkimmäinen luokka sai merkittävää suosiota, ja Gitistä tuli tosiasiassa standardi modernissa ohjelmistokehityksessä. Tämä VCS olisi parhaiten sopiva valinta organisaatiolle malliskenaariossamme, varsinkin kun otetaan huomioon sen aikeet käyttää GitHubia DevOps-siirtymän kohdealustana. Tutustu tässä osiossa Gitin käyttöön versionhallintana.
Keskitetty vs. hajautettu versionhallinta
Sekä keskitetyt versiontarkistusjärjestelmät (CVCS) että hajautetut versiontarkistusjärjestelmät (DVCS) tarjoavat mahdollisuuden hallita ja seurata ohjelmistokehitysprojektien muutoksia. Niiden väliset ensisijaiset erot liittyvät tapaan, jolla ne toteuttavat säilöjä ja yhteistyötä. Etenkin:
- Säilön sijainti: Keskitetyissä järjestelmissä säilössä on yksi keskitetty esiintymä, joka sisältää projektin koko historian. Hajautetuissa järjestelmissä kullakin tiimin jäsenelle olisi yleensä yksi, täysin toiminnallinen paikallinen kopio koko säilöstä, mahdollisesti myös sen koko versiohistoria.
- Verkkoyhteys: Keskitetyissä järjestelmissä säilön keskitetyn esiintymän käyttö vaaditaan useiden toimintojen suorittamiseen, mukaan lukien päivitykset ja historian nouto. Hajautetuissa järjestelmissä kaikki toiminnot voidaan suorittaa säilön paikallisessa kopiossa.
- Yhteistyömalli: Keskitetyissä järjestelmissä kehittäjät kuittaavat ulos tiedostot säilön keskitetystä esiintymästä samalla, kun muodostat yhteyden siihen verkossa, ennen kuin he tekevät muutoksia ja vahvistavat muutokset. Tämä estää muiden tiedostojen kuittaamisen ulos muutoksista. Hajautettujen järjestelmien kehittäjät tekevät muutoksia paikalliseen säilön kopioon ja tekevät niihin muutoksia, jotka jossain vaiheessa myöhemmin synkronoidaan muiden kopioiden kanssa.
- haaraaminen ja mallin yhdistäminen: Keskitettyjen järjestelmien haaraaminen ja yhdistäminen edellyttää yleensä koordinointia muiden kanssa. Hajautetuissa järjestelmissä haarat voidaan luoda itsenäisesti paikallisissa kopioissa ja yhdistää myöhemmin.
On syytä huomata, että vaikka hajautettu malli ei luota keskussäilöön (perinteisessä mielessä), on tavallista käyttää yhtä säilön kopiota, jota isännöivät sellaiset palvelut kuin GitHub, GitLab tai Bitbucket. Tämä esiintymä toimii yhteistyön ja synkronoinnin keskipisteenä.
Git-terminologia
Jotta voit tutustua Git-palvelun osaamiseen, sinun on tärkeää tutustua sen terminologiaan. Jotkin käsitteet ovat Gitille ainutlaatuisia ja erottavat sen muista DVCS:istä. Perustavanlaatuisimpia Git-termejä ovat seuraavat:
- Puun käsittely: hakemistorakenne, joka sisältää kaikki projektin tiedostot.
- Säilön (kutsutaan yleisesti nimellä säilö): työpuun ylimmällä tasolla sijaitseva hakemisto, joka isännöi kaikkia projektin tiedostoja näiden tiedostojen versiohistorian kanssa.
- Kloonaa: toiminto, jolla luodaan kopio etäsäilöstä paikallisessa tietokoneessa, jotta voit työstää projektia, johon sinulla on käyttöoikeus.
- Fork: toiminto, jolla luodaan GitHubissa isännöity kopio etäsäilöstä työstämään projektia, johon sinulla ei ole käyttöoikeutta. Haarautumalla käytetään yleensä haarautusta, jos aiot osallistua jonkun muun projektiin tai luoda oman version tällaisesta projektista. Vaikka sinulla ei ole kirjoitusoikeuksia alkuperäiseen säilöön, voit hallita haarautumaan täysin.
- Commit: tilannevedos säilön tiedostoihin tietyllä hetkellä tehdyistä muutoksista. Vahvistuksia käytetään muutosten tallentamiseen ja tallentamiseen.
- valmistelualue välisijainnin (joka ei ole osa säilöä), jossa työpuun tiedostoihin tehdyt muutokset valmistellaan ennen niiden hyväksymistä. Sen avulla kehittäjät voivat valita muutokset, jotka he aikovat suorittaa.
- Branch -: nimetty linkitettyjen vahvistusten sarja. Yksinkertaisesti sanottuna haara edustaa projektin erillistä versiota. Tämä mahdollistaa projektin eri osien työstämisen samanaikaisesti vaikuttamatta sen pääversioon. Haaran viimeisintä vahvistusta kutsutaan pään. Oletushaara, joka luodaan automaattisesti, kun alustat säilön, kutsutaan nimellä main tai master.
- Merge: muutosten yhdistäminen yhdestä haarasta (tai vahvistamisesta) toiseen. Tämä integroi muutokset yhdestä haarasta toiseen.
- Object: yksi säilössä käytettävissä olevista neljästä entiteettityypistä. Näihin entiteetteihin kuuluu blob-objektien, jotka edustavat yksittäisiä tiedostoja, puu-, työpuuta edustava vahvistus, joka edustaa tiettyä työpuun versiota, sekä *-tunniste, joka on yksittäiselle vahvistukseen määritetty tunniste.
- Hash: automaattisesti luotu, yksilöivä, kiinteän pituinen tunnus, joka edustaa objektin sisältöä. Aina, kun tämä objekti muuttuu, myös sen hajautusraja muuttuu. Näin Git voi selvittää, mikä säilön sisältö on päivitetty.
- Remote: viittaus toiseen säilöön (muu kuin paikallinen), joka yleensä osoittaa säilön palvelussa isännöityyn esiintymään. Tämä toimii oletusarvona push- ja pull-toiminnoissa.
- Pull-: toiminto, joka noutaa muutokset etäsäilöstä ja yhdistää ne nykyiseen haaraan.
- Push-: toiminto, joka lähettää paikalliset vahvistukset etäsäilöön ja päivittää tiedot paikallisesti tehtyjen muutosten mukaisesti.
- Nouda: toiminto, joka noutaa muutokset etäsäilöstä yhdistämättä niitä automaattisesti. Näin voit tarkastella ennen yhdistämistä.
- Pull-pyynnön: Ominaisuus Git-pohjaisissa isännöintiympäristöissä (kuten GitHubissa), jonka avulla kehittäjät voivat ehdottaa muutoksia ja pyytää niiden yhdistämistä kohdehaaraan.
Git sisältää myös runsaasti komentoja, joiden avulla voit ottaa versionhallinnan täysin käyttöön ja hallita sitä komentoliittymän, kuten Linux Bashin tai Windowsin komentokehotteen, avulla. Vaihtoehtoisesti voit hallita Git-tietokantaa työpöytäsovellusten, kuten GitHub Desktopin, kautta. Git-pohjaiset isännöintiympäristöt tarjoavat verkkokäyttöliittymän, joka helpottaa vuorovaikutusta palvelupuolen säilöjen kanssa.
Git vs. GitHub
Kuten aiemmin kuvattiin, Git on monialustainen, avoimen lähdekoodin DVCS, joka helpottaa yhteistyötä paikallisten säilöjen avulla, jotka voidaan synkronoida etäsäilöjen kanssa. GitHub on pilvipohjainen palvelu, joka tarjoaa Git-säilöjen isännöintiympäristön. Se laajentaa Git-ominaisuuksien valikoimaa sisältämällä tuen seuraaville:
- etäsäilöjä: helpottaa hajautettujen tiimien välistä vuorovaikutusta.
- Yhteistyötyökalut: sellaisten ominaisuuksien tarjoaminen kuin ongelmat, keskustelut, pull-pyynnöt, ilmoitukset, otsikot, toiminnot, haarukkat, wikit ja projektit.
- Verkkopohjaisen liittymän: Git-komentojen käytön tarpeen minimointi
- haarasuojauksen: niiden ehtojen täytäntöönpano, jotka on täytettävä ennen yhdistämisen alkamista (kuten valmiit pull-pyyntöjen tarkistukset).