Gitin helppo sulautumiskyky on yksi sen vahvuuksista. Yhdistämisen aikana git käyttää pikakelausta yhdistämällä, kun se huomaa, että nykyisen haaran HEAD on yhdistettävän sitoumuksen esi-isä. Nopeasti eteenpäin yhdistämisessä ei ole uutta sitoutumista. Git vain siirtää osoitinta. Jos tämä toiminta ei ole toivottavaa, voit käyttää no-ff-lippua uuden sitoutumisen luomiseen yhdistämistä varten.
Kuinka yhdistäminen näyttää pikakelauksella ja ilman sitä
Pikakelauksen jälkeen git-historiasi näyttää tältä:
C0 -> C1 -> C2 -> C3
Tässä on sama määrä sitoumuksia: yhdistämishistoria ilman pikakelausta:
Ensimmäisessä tapauksessa ei ole viitteitä siitä, että haarautumista olisi tapahtunut. Toisessa tapauksessa historia näyttää C4 -sitoumuksen osoittamaan, missä yhdistäminen tapahtui.
Esimerkin läpi käveleminen
Luo git-arkisto, luo haara ja kokeile sitten yhdistämistä pikakelauksella ja ilman sitä.
Osa 1: Asennus
Ensin voit luoda git -arkiston seuraavasti:
$ mkdir my_project$ cd my_project
$ git init
$ touch a.txt
$ git lisäys -A
$ git sitoutua -m 'C0: a.txt -tiedoston lisääminen'
Luo nyt haara, jota kutsutaan ominaisuuksiksi, ja tee muutamia muutoksia:
$ git haaraominaisuudet$ git -kassan ominaisuudet
$ touch b.txt
$ git lisäys -A
$ git sitoutua -m 'C1: Lisää b.txt'
$ touch c.txt
$ git lisäys -A
$ git sitoutua -m 'C2: Lisää c.txt'
$ touch d.txt
$ git lisäys -A
$ git sitoutua -m 'C3: Lisää d.txt'
Osa 2: Yhdistä pikakelaukseen
Palatkaamme päähaaraan ja yhdistämme siihen haarautuneet ominaisuudet:
$git kassallehallita$git yhdistääominaisuudet
Lähtö:
Päivitetään 08076fb..9ee88ebPikakelaus eteenpäin
b.txt | 0
c.txt | 0
d.txt | 0
3 tiedostoa muutettu, 0 lisäystä (+), 0 poistoa (-)
luontitila 100644 b.txt
luontitila 100644 c.txt
luontitila 100644 d.txt
Jos tarkistat historian, näet:
$ git log -online9ee88eb C3: d.txt -tiedoston lisääminen
c72b92c C2: c.txt -tiedoston lisääminen
2e4039e C1: b.txt -tiedoston lisääminen
08076fb C0: a.txt -tiedoston lisääminen
Joten kaikki ominaisuudet -haaraan liittyvät sitoumukset ovat nyt päähaarassa. Jos jatkat muutoksia isäntään, et voi tietää, milloin ominaisuuksien haara on yhdistetty siihen.
Osa 3: Ilman pikakelausta
Toista kohta 1 uuden kansion kohdalla.
Kokeile sitten yhdistämistä ilman pikakelausta:
$git kassallehallita$git yhdistää -ei-ffominaisuus
Se avaa seuraavat git -oletustekstieditorissa:
Yhdistä haara'ominaisuudet'# Kirjoita sitoutumisviesti, joka selittää miksi tämä yhdistäminen on tarpeen,
# varsinkin jos se yhdistää päivitetyn ylävirran osa -aluehaaraan.
#
## -Merkillä alkavat rivit ohitetaan ja tyhjä viesti keskeytetään
# sitoutuminen.
Muokkaa kommentteja. Tässä tapauksessa voit vain lisätä C4: ennen Yhdistä haara -ominaisuuksia. Tuloksen pitäisi näyttää tältä:
Yhdistäminen tehty rekursiivisella strategialla.b.txt | 0
c.txt | 0
d.txt | 0
3 tiedostoa muutettu, 0 lisäystä (+), 0 poistoa (-)
luontitila 100644 b.txt
luontitila 100644 c.txt
luontitila 100644 d.txt
Jos tarkistat historian, sen pitäisi näyttää tältä:
$ git log -onlinee071527 C4: Yhdistä haaraominaisuudet
bb79c25 C3: d.txt -tiedoston lisääminen
692bd8c C2: lisätään c.txt
a0df62a C1: b.txt -tiedoston lisääminen
7575971 C0: a.txt -tiedoston lisääminen
Voit nähdä, että vaikka sinulla on täsmälleen samat muutokset, tässä yhdistämisversiossa on ylimääräinen C4 -sitoumus, joka tarkoittaa ominaisuuksien yhdistämistä haaraksi.
Johtopäätös
Git merge no-ff -lippu auttaa luomaan luettavampaa historiaa. Sen avulla voit lisätä tunnisteita, jotka osoittavat selvästi, missä yhdistäminen tapahtui. Se voi säästää aikaa ja vaivaa virheenkorjauksen aikana.