Git Merge no-ff Optioni mõistmine
Giti lihtne ühendamisvõime on üks selle tugevusi. Ühendamise ajal kasutab git kiiresti edasi ühendamist, kui ta märkab, et praeguse haru HEAD on ühendamise esivanem. Kiiresti edasi ühendamisel pole uut kohustust. Git lihtsalt liigutab kursorit. Kui selline käitumine pole soovitav, saate lipu no-ff abil ühendamiseks uue sidumise luua.
Kuidas ühendamine välja näeb koos edasiliikumisega ja ilma
Pärast kiiret edasiliikumist näeb teie git ajalugu välja selline:
C0 -> C1 -> C2-> C3
Sama arvu kulukohustuste jaoks on siin liitmisajalugu ilma kiiret edasiliikumist:
Esimesel juhul pole viiteid hargnemisele. Teisel juhul näitab ajalugu C4 kohustust näidata, kus ühendamine toimus.
Näite kaudu kõndides
Loote git-hoidla, loote haru ja proovite seejärel ühendusi kiirelt edasi liikuda ja ilma selleta.
1. jagu: seadistamine
Kõigepealt saate luua git-hoidla järgmiste toimingutega:
$ mkdir my_project$ cd my_project
$ git init
$ puudutage a.txt
$ git lisa -A
$ git pühendama -m "C0: a lisamine.txt "
Nüüd loome haru nimega funktsioonid ja teeme mõned muudatused:
filiaali $ git funktsioonidKassa $ git funktsioonid
$ puudutage b.txt
$ git lisa -A
$ git toime -m "C1: b lisamine.txt "
$ puudutage c.txt
$ git lisa -A
$ git pühendu -m "C2: c lisamine.txt "
$ puudutage d.txt
$ git lisa -A
$ git pühendama -m "C3: d lisamine.txt "
2. jagu: ühendamine kiire edasisaatmisega
Läheme tagasi põhiharu juurde ja ühendame sellesse hargnevad funktsioonid:
kassas $ git master$ git ühendamise funktsioonid
Väljund:
08076fb värskendamine ... 9ee88ebKiiresti edasi
b.txt | 0
c.txt | 0
d.txt | 0
3 faili muudetud, 0 sisestust (+), 0 kustutust (-)
loomisrežiim 100644 b.txt
loomisrežiim 100644 c.txt
loomisrežiim 100644 d.txt
Kui kontrollite ajalugu, näete:
$ git log - oneline9ee88eb C3: d lisamine.txt
c72b92c C2: c lisamine.txt
2e4039e C1: b lisamine.txt
08076fb C0: a lisamine.txt
Niisiis, kõik funktsioonide filiaalist tehtud kohustused asuvad nüüd põhiharus. Kui jätkate master-is muudatuste tegemist, ei saa kuidagi teada, millal funktsioonide haru sellesse liideti.
3. jagu: ilma kiire edastamiseta
Korrake 1. jaotist uue kausta jaoks.
Seejärel proovige ühendada ilma kiiret edasiliikumist:
kassas $ git masterFunktsioon $ git merge --no-ff
See avab teie giti vaiketekstiredaktoris järgmise:
Ühenda haru funktsioonid# Sisestage täitmise teade, et selgitada, miks see liitmine on vajalik,
# eriti kui see ühendab uuendatud ülesvoolu teema haruks.
#
# Tähega '#' algavaid ridu ignoreeritakse ja tühi kiri katkestatakse
# pühenduma.
Muuda kommentaare. Sel juhul saate lihtsalt lisada "C4:" enne "Merge filiaali funktsioonide". Väljund peaks välja nägema selline:
„Rekursiivse” strateegia abil tehtud liitmine.b.txt | 0
c.txt | 0
d.txt | 0
3 faili muudetud, 0 sisestust (+), 0 kustutust (-)
loomisrežiim 100644 b.txt
loomisrežiim 100644 c.txt
loomisrežiim 100644 d.txt
Kui kontrollite ajalugu, peaks see välja nägema järgmine:
$ git log - onelinee071527 C4: ühendage haru funktsioonid
bb79c25 C3: d lisamine.txt
692bd8c C2: c lisamine.txt
a0df62a C1: b lisamine.txt
7575971 C0: lisades a.txt
Näete, et kuigi teil on täpselt samad muudatused, on sellel ühendamise versioonil täiendav C4 kohustus, mis tähistab funktsioonide hargnemist põhihalduriks.
Järeldus
Git merge no-ff lipp aitab luua loetavama ajaloo. See võimaldab teil panna silte, mis näitavad selgelt, kus ühendused toimusid. See võib säästa teie aega ja vaeva silumise ajal.
Edasine uuring:
- https: // git-scm.com / docs / git-merge
Viited:
- Virna ületäitumine: mis on erinevus git-merge-ja-git-merge-no-ff vahel
- https: // www.atlasslane.com / git / õpetused / filiaalide / git-ühendamine