Ero sivun ”Git” versioiden välillä

Siirry navigaatioon Siirry hakuun
1 766 merkkiä lisätty ,  24. lokakuuta 2009
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 ==

Navigointivalikko