4 175
muokkausta
(→Git yhteistyövälineenä: välitallennus) |
(→Git yhteistyövälineenä: fetch) |
||
Rivi 234: | Rivi 234: | ||
Versionhallinnasta on eniten iloa tilanteessa, jossa useampi kehittäjä toimii saman projektin kimpussa. Oletetaan nyt, että äskeinen kehitystyö tapahtui hakemistossa <tt>/home/osku/projekti</tt>. Nyt toinen samalla koneella oleva käyttäjä haluaa osallistua kehitystyöhön. Tällöin hän voi hakea versionhallinnasta kopion itselleen komennolla <tt>git clone</tt>: | Versionhallinnasta on eniten iloa tilanteessa, jossa useampi kehittäjä toimii saman projektin kimpussa. Oletetaan nyt, että äskeinen kehitystyö tapahtui hakemistossa <tt>/home/osku/projekti</tt>. Nyt toinen samalla koneella oleva käyttäjä haluaa osallistua kehitystyöhön. Tällöin hän voi hakea versionhallinnasta kopion itselleen komennolla <tt>git clone</tt>: | ||
$ git clone /home/osku/projekti hello | $ git clone /home/osku/projekti hello | ||
Komento kopioi hakemistosta <tt>/home/osku/projekti</tt> löytyvän projektin Git-versionhallinnasta kopion hakemistoon <tt>hello</tt>. | Komento kopioi hakemistosta <tt>/home/osku/projekti</tt> löytyvän projektin Git-versionhallinnasta kopion hakemistoon <tt>hello</tt>. Jos kehityshaaraa ei erikseen mainita haetaan <tt>master</tt>-haara. | ||
Kun toinen käyttäjä (tässä Elisa) on tehnyt haluamiaan muutoksia projektiin (commitoinut ne versionhallintaan hakemistossa <tt>/home/elisa/hello</tt>) hän voi ilmoittaa siitä Oskulle, joka voi hakea muutokset omaan kehityshaaraansa komennolla | Kun toinen käyttäjä (tässä Elisa) on tehnyt haluamiaan muutoksia projektiin (commitoinut ne versionhallintaan hakemistossa <tt>/home/elisa/hello</tt>) hän voi ilmoittaa siitä Oskulle, joka voi hakea muutokset omaan kehityshaaraansa komennolla | ||
$ git pull /home/elisa/hello master | $ git pull /home/elisa/hello master | ||
Komento hakee parametrina annetusta hakemistosta löytyvästä versionhallinnasta <tt>master</tt>-kehityshaaran sisällön ja liittää sen aktiivisena olevaan kehityshaaraan. Jos paikalliseen kehityshaaraan ja etähaaraan (eli Elisan kehityshaaraan) välillä on päällekkäisiä muokkauksia jätetään ristiriidat käyttäjän ratkaistavaksi (kuten edellä käsiteltäessä kehityshaarojen yhdistämistä). Lopuksi <tt>git pull</tt> tekee muutoksista commitin nykyiseen haaraan. | Komento hakee parametrina annetusta hakemistosta löytyvästä versionhallinnasta <tt>master</tt>-kehityshaaran sisällön ja liittää sen aktiivisena olevaan kehityshaaraan. Jos paikalliseen kehityshaaraan ja etähaaraan (eli Elisan kehityshaaraan) välillä on päällekkäisiä muokkauksia jätetään ristiriidat käyttäjän ratkaistavaksi (kuten edellä käsiteltäessä kehityshaarojen yhdistämistä). Lopuksi <tt>git pull</tt> tekee muutoksista commitin nykyiseen haaraan. | ||
Yleensä ulkoisen kehityshaaran liittäminen suoraan ei ole järkevää, vaan kannattaa ensin katsoa, minkälaisia muutoksia ollaan tekemässä. Tämä onnistuu hakemalla ulkoisen kehityshaaran muutokset komennolla <tt>git fetch</tt>, eli Osku voisi ajaa komennon | |||
$ git fetch /home/elisa/hello master | |||
eli <tt>git fetch</tt> -komennolle annetaan samat parametrit kuin <tt>git pull</tt> -komennolle. | |||
Nyt muutokset on haettu mutta ei vielä siirretty versionhallintaan. Myöskään paikallisia tiedostoja ei ole muutettu mitenkään. Haettuun kehityshaaraan voidaan kuitenkin viitata tagilla <tt>FETCH_HEAD</tt>, jolloin nykyisen tilanteen (<tt>HEAD</tt>) ja haetun tilanteen erot nähtäisiin komennolla | |||
$ git log -p HEAD..FETCH_HEAD | |||
Jos muutokset näyttävät hyviltä, ne voidaan commitoida liittämällä <tt>FETCH_HEAD</tt>-haara aktiivisena olevaan haaraan komennolla | |||
$ git merge FETCH_HAD | |||
Etäkoneilla sijaitseviin kehityshaaroihin voidaan luoda linkkejä komennolla <tt>git remote</tt>. Esimerkiksi Osku voisi luoda Elisan haaraan linkin <tt>elisa</tt> komennolla | |||
$ git remote add elisa /home/elisa/hello | |||
Tämän jälkeen muutokset voitaisiin hakea helposti komennolla | |||
$ git fetch elisa | |||
joka hakisi kaikkien Elisan kehityshaarojen sisällöt. Näihin haaroihin voitaisiin nyt viitata muodossa <tt>elisa/haaran_nimi</tt>, esimerkiksi <tt>elisa/master</tt>. Esimerkiksi erot nähtäisiin komennolla | |||
$ git log -p HEAD..elisa/master | |||
Ja haaran liittäminen nykyiseen haaraan onnistuisi komennolla | |||
$ git merge elisa/master | |||
Yksittäisen haaran (esim. <tt>master</tt>) voi hakea komennolla | |||
$ git fetch elisa master | |||
jolloin haettuun haaraan voi viitata tagilla <tt>FETCH_HEAD</tt>. | |||
== Gitk == | == Gitk == |