Git

Git Merge -no-ff opcija

Git Merge -no-ff opcija

Razumijevanje opcije Git Merge no-ff

Jednostavnost spajanja gita jedna je od njegovih prednosti. Tijekom spajanja, git koristi premotavanje unaprijed kada primijeti da je HEAD trenutne grane predak urezivanja koje pokušavate spojiti. U brzom spajanju nema novog urezivanja. Git samo pomiče pokazivač. Ako ovo ponašanje nije poželjno, možete upotrijebiti zastavicu no-ff za stvaranje novog urezivanja za spajanje.

Kako Merge izgleda brzo i naprijed

Nakon premotavanja prema naprijed, vaša će git povijest izgledati ovako:

C0 -> C1 -> C2-> C3

Za isti broj predavanja, evo povijesti spajanja bez premotavanja unaprijed:

U prvom slučaju nema naznaka da je bilo razgrananja. U drugom slučaju, povijest prikazuje predavanje C4 kako bi se naznačilo gdje je došlo do spajanja.

Šetnja kroz primjer

Stvorit ćete git spremište, stvoriti granu, a zatim isprobati spajanje sa i bez premotavanja unaprijed.

Odjeljak 1: Postavljanje

Prvo, možete stvoriti git spremište pomoću sljedećih koraka:

$ mkdir moj_projekt
$ cd moj_projekt
$ git init
$ dodirni a.txt
$ git dodaj -A
$ git commit -m "C0: Dodavanje a.txt "

Sada kreirajmo granu koja se naziva značajke i izvršimo nekoliko promjena:

Značajke grane $ git
$ git značajke naplate
$ dodir b.txt
$ git dodaj -A
$ git commit -m "C1: Dodavanje b.txt "
$ dodir c.txt
$ git dodaj -A
$ git commit -m "C2: Dodavanje c.txt "
$ dodir d.txt
$ git dodaj -A
$ git commit -m "C3: Dodavanje d.txt "

Odjeljak 2: Spajanje s brzim prosljeđivanjem

Vratimo se glavnoj grani i u nju spojimo grane:

$ git checkout master
Značajke spajanja $ git

Izlaz:

Ažuriranje 08076fb… 9ee88eb
Premotavanje unaprijed
b.txt | 0
c.txt | 0
d.txt | 0
Promijenjene su 3 datoteke, 0 umetanja (+), 0 brisanja (-)
način stvaranja 100644 b.txt
način stvaranja 100644 c.txt
način stvaranja 100644 d.txt

Ako provjerite povijest, vidjet ćete:

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

Dakle, svi predaji iz grane značajki sada su u glavnoj grani. Ako nastavite s izmjenama u masteru, ne možete znati kada je grana značajki spojena u njega.

Odjeljak 3: Bez brzog prosljeđivanja

Ponovite odjeljak 1 za novu mapu.

Zatim pokušajte spojiti bez brzog premotavanja unaprijed:

$ git checkout master
$ git merge - značajka -no-ff

Otvorit će sljedeće u zadanom uređivaču teksta vašeg Gita:

Spoji grane 'značajke'
# Unesite poruku urezivanja kako biste objasnili zašto je ovo spajanje potrebno,
# pogotovo ako spaja ažurirani uzvodno u granu teme.
#
# Linije koje počinju s '#' bit će zanemarene, a prazna poruka će se prekinuti
# počiniti.

Izmijenite komentare. U tom slučaju možete dodati "C4:" prije "Spajanje grana 'značajke'". Izlaz bi trebao izgledati ovako:

Spajanje izvedeno 'rekurzivnom' strategijom.
b.txt | 0
c.txt | 0
d.txt | 0
Promijenjene su 3 datoteke, 0 umetanja (+), 0 brisanja (-)
način stvaranja 100644 b.txt
način stvaranja 100644 c.txt
način stvaranja 100644 d.txt

Ako provjerite povijest, ona bi trebala izgledati ovako:

$ git log --oneline
e071527 C4: Spajanje grane 'značajke'
bb79c25 C3: Dodavanje d.txt
692bd8c C2: Dodavanje c.txt
a0df62a C1: Dodavanje b.txt
7575971 C0: Dodavanje a.txt

Možete vidjeti da, iako imate potpuno iste promjene, ova verzija spajanja ima dodatni C4 predaj koji označava spajanje značajki grane u master.

Zaključak

Oznaka git merge no-ff pomaže stvoriti čitljiviju povijest. Omogućuje vam stavljanje oznaka koje jasno pokazuju gdje je došlo do spajanja. To vam može uštedjeti vrijeme i trud tijekom otklanjanja pogrešaka.

Daljni studiji:

Reference:
Kako koristiti Xdotool za poticanje klikova i pritiska miša u Linuxu
Xdotool je besplatni alat za naredbene retke otvorenog koda za simulaciju klikova mišem i pritiska tipki. Ovaj će članak pokrivati ​​kratki vodič o ko...
Top 5 ergonomskih proizvoda za računalni miš za Linux
Uzrokuje li dugotrajno korištenje računala bolove u zapešću ili prstima? Patite li od ukočenih zglobova i stalno se morate rukovati? Osjećate li goruć...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...