Git

„Git Merge -no-ff“ parinktis

„Git Merge -no-ff“ parinktis

Suprasti „Git Merge no-ff“ parinktį

Lengva susilieti „git“ galimybė yra viena iš jos stipriųjų pusių. Sujungimo metu „git“ naudoja suliejimą į priekį, kai pastebi, kad dabartinio filialo GALVA yra įsipareigojimo, kurį bandote sujungti, protėvis. Sujungus greitį pirmyn, nėra jokio naujo įsipareigojimo. Gitas tiesiog perkelia rodyklę. Jei tokia elgsena nėra pageidautina, galite naudoti vėliavą „no-ff“, kad sukurtumėte naują susijungimo įsipareigojimą.

Kaip atrodo susijungimas su greitu pirmyn ir be jo

Po greito pirmyn jūsų gito istorija atrodys taip:

C0 -> C1 -> C2-> C3

Dėl to paties įsipareigojimų skaičiaus pateikiama sujungimo istorija be pirmyn:

Pirmuoju atveju nėra jokių požymių, kad būtų buvę šakų. Antruoju atveju istorija rodo C4 įsipareigojimą nurodyti susijungimo vietą.

Ėjimas per pavyzdį

Jūs sukursite „git“ saugyklą, sukursite filialą ir tada išbandysite sujungimus su pirmyn ir be jų.

1 skyrius: Sąranka

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

$ mkdir my_project
$ cd my_project
$ git init
$ palieskite a.txt
$ git pridėti -A
$ git įsipareigoti -m "C0: pridedant a.txt "

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

$ git filialo ypatybės
„$ git“ kasos funkcijos
$ palieskite b.txt
$ git pridėti -A
$ git įsipareigoti -m "C1: pridedant b.txt "
$ palieskite c.txt
$ git pridėti -A
$ git įsipareigoti -m "C2: pridedama c.txt "
$ palieskite d.txt
$ git pridėti -A
$ git įsipareigoti -m "C3: pridedamas d.txt "

2 skyrius: Sujungti su greitu persiuntimu

Grįžkime prie pagrindinio filialo ir sujunkite jame esančias funkcijas:

$ git atsiskaitymo meistras
$ git suliejimo funkcijos

Išvestis:

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

Jei patikrinsite istoriją, pamatysite:

$ git žurnalas - tiesioginis
9ee88eb C3: pridedama d.txt
c72b92c C2: pridedant c.txt
2e4039e C1: pridedama b.txt
08076fb C0: pridedamas a.txt

Taigi, visi įsipareigojimai iš funkcijų filialo dabar yra pagrindiniame filiale. Jei ir toliau atliekate pagrindinio pakeitimus, negalite žinoti, kada funkcijų šaka buvo į ją sujungta.

3 skyrius: be greito persiuntimo

Pakartokite 1 skyrių naujam aplankui.

Tada pabandykite sujungti be greito persiuntimo:

$ git atsiskaitymo meistras
$ git merge --no-ff funkcija

Tai jūsų „git“ numatytajame teksto rengyklėje atvers:

Sujungti filialo „funkcijas“
# Įveskite įsipareigojimo pranešimą, kad paaiškintumėte, kodėl šis sujungimas yra būtinas,
# ypač jei jis sujungia atnaujintą ankstesnį srautą į temų šaką.
#
# Eilutės, prasidedančios „#“, bus ignoruojamos, o tuščias pranešimas bus nutrauktas
# įsipareigoti.

Keisti komentarus. Tokiu atveju galite tiesiog pridėti „C4:“ prieš „Merge branch 'features“. Išvestis turėtų atrodyti taip:

„Rekursinės“ strategijos sujungimas.
b.txt | 0
c.txt | 0
d.txt | 0
Pakeisti 3 failai, 0 įterpimų (+), 0 pašalinimų (-)
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 žurnalas - tiesioginis
e071527 C4: Sujungti šakos „ypatybes“
bb79c25 C3: pridedama d.txt
692bd8c C2: pridedant c.txt
a0df62a C1: pridedant b.txt
7575971 C0: pridedant a.txt

Galite pastebėti, kad net jei jūs turite tuos pačius pakeitimus, ši sujungimo versija turi papildomą C4 įsipareigojimą, kuris reiškia funkcijų šakos sujungimą į pagrindinį.

Išvada

„Git Merge No-FF“ vėliava padeda sukurti lengviau skaitomą istoriją. Tai leidžia įdėti žymas, kurios aiškiai parodo, kur įvyko susijungimai. Tai gali sutaupyti jūsų laiko ir pastangų derinant.

Tolesnis tyrimas:

Nuorodos:
Kaip parodyti FPS skaitiklį „Linux“ žaidimuose
„Linux“ žaidimai gavo didelį postūmį, kai „Valve“ paskelbė „Linux“ palaikymą „Steam“ klientui ir jų žaidimams 2012 m. Nuo tada daugelis AAA ir indie ž...
Kaip atsisiųsti ir paleisti „Sid Meier Civilization VI“ sistemoje „Linux“
Įvadas į žaidimą „Civilization 6“ yra šiuolaikinė klasikinės koncepcijos, pristatytos „Age of Empires“ žaidimų serijoje, koncepcija. Idėja buvo gana p...
Kaip įdiegti ir žaisti „Doom“ sistemoje „Linux“
Įvadas į Doom „Doom“ serija atsirado 90-aisiais, išleidus originalų „Doom“. Tai buvo tiesioginis hitas, o nuo to laiko žaidimų serija gavo daugybę apd...