„Git Merge“-ne parinktis

Git Merge No Ff Option



Lengvas „git“ sujungimo gebėjimas yra viena iš jo stiprybių. Sujungimo metu „git“ naudoja greitą suliejimą, kai pastebi, kad dabartinės šakos GALVA yra įsipareigojimo, kurį bandote sujungti, protėvis. Greitai suliejant, naujų įsipareigojimų nėra. Git tiesiog perkelia žymeklį. Jei toks elgesys nėra pageidautinas, galite naudoti vėliavą no-ff, kad sukurtumėte naują susijungimo įsipareigojimą.

Kaip atrodo sujungimas su greitu pirmyn ir be jo

Po greito persiuntimo jūsų git istorija atrodys taip:







C0 -> C1 -> C2 -> C3



Pateikiant tiek pat įsipareigojimų, čia pateikiama suliejimo istorija be greito persukimo:







Pirmuoju atveju nėra jokių požymių, kad buvo šakų. Antruoju atveju istorija rodo C4 įsipareigojimą, nurodantį, kur įvyko susijungimas.

Pasivaikščiojimas pavyzdžiu

Sukursite „git“ saugyklą, sukursite šaką ir bandysite sujungti su greitu pirmyn ir be jo.



1 skyrius: sąranka

Pirma, galite sukurti „git“ saugyklą atlikdami šiuos veiksmus:

$ mkdir my_project
$ cd my_project
$ git init
$ touch a.txt
$ git pridėti -A
$ git įsipareigoti -m 'C0: pridedamas a.txt'

Dabar sukurkime šaką, vadinamą funkcijomis, ir atlikime keletą pakeitimų:

$ git šakos ypatybės
$ git kasos funkcijos
$ touch b.txt
$ git pridėti -A
$ git įsipareigoti -m 'C1: pridedamas b.txt'
$ touch c.txt
$ git pridėti -A
$ git įsipareigoti -m 'C2: pridedamas c.txt'
$ touch d.txt
$ git pridėti -A
$ git įsipareigoti -m 'C3: pridedamas d.txt'

2 skyrius: Sujunkite su greitu persiuntimu

Grįžkime prie pagrindinės šakos ir sujungsime į ją šakas:

$git kasameistras
$git susilietifunkcijos

Išėjimas:

Atnaujinama 08076fb..9ee88eb
Pirmyn
b.txt | 0
c.txt | 0
d.txt | 0
Pakeisti 3 failai, 0 įterpimų (+), 0 ištrynimų (-)
sukurti režimą 100644 b.txt
sukurti režimą 100644 c.txt
sukurti režimą 100644 d.txt

Jei patikrinsite istoriją, pamatysite:

$ git log -online
9ee88eb C3: pridedamas d.txt
c72b92c C2: pridedamas c.txt
2e4039e C1: pridedamas b.txt
08076fb C0: pridedamas a.txt

Taigi, visi įsipareigojimai iš funkcijų šakos dabar yra pagrindinėje šakoje. Jei ir toliau atliksite pagrindinio puslapio pakeitimus, negalėsite žinoti, kada funkcijų šaka buvo sujungta į ją.

3 skyrius: be greito persiuntimo

Pakartokite 1 skyrių naujam aplankui.

Tada pabandykite sujungti be greito persukimo:

$git kasameistras
$git susilieti -ne-ffypatybė

Numatytame „git“ teksto rengyklėje jis atvers šiuos dalykus:

Sujungti filialą'funkcijos'
# Įveskite įsipareigojimo pranešimą, kad paaiškintumėte, kodėl šis sujungimas yra būtinas,
# ypač jei jis sujungia atnaujintą srautą į temos šaką.
#
# Eilutės, prasidedančios „#“, bus ignoruojamos, o tuščias pranešimas nutraukiamas
# įsipareigojimas.

Pakeiskite komentarus. Tokiu atveju galite tiesiog pridėti C4: prieš sujungdami filialo „features“. Išvestis turėtų atrodyti taip:

Sujungimas atliktas naudojant „rekursinę“ strategiją.
b.txt | 0
c.txt | 0
d.txt | 0
Pakeisti 3 failai, 0 įterpimų (+), 0 ištrynimų (-)
sukurti režimą 100644 b.txt
sukurti režimą 100644 c.txt
sukurti režimą 100644 d.txt

Dabar, jei patikrinsite istoriją, ji turėtų atrodyti taip:

$ git log -online
e071527 C4: Sujungti filialo „ypatybes“
bb79c25 C3: pridedamas d.txt
692bd8c C2: pridedamas c.txt
a0df62a C1: pridedamas b.txt
7575971 C0: pridedamas a.txt

Matote, kad nors jūs turite tuos pačius pakeitimus, šioje suliejimo versijoje yra papildomas C4 įsipareigojimas, reiškiantis funkcijų sujungimą į pagrindinį.

Išvada

„Git merge no-ff“ vėliava padeda sukurti labiau skaitomą istoriją. Tai leidžia įdėti žymas, aiškiai parodančias, kur įvyko sujungimai. Derindami galite sutaupyti laiko ir pastangų.

Tolesnis tyrimas:

Nuorodos: