Git Merge-ei-ff-vaihtoehto

Git Merge No Ff Option

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..9ee88eb
Pikakelaus 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 -online
9ee88eb 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 -online
e071527 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.

Jatko-opinnot:

Viitteet: