Git

Git Merge -no-ff Opció

Git Merge -no-ff Opció

A Git Merge no-ff Option megértése

A git könnyen egyesíthető képessége az egyik erőssége. Összevonás során a git gyors előre egyesítést használ, amikor észreveszi, hogy az aktuális ág FEJE az egyesíteni kívánt elkötelezettség őse. Gyors előretekerés esetén nincs új elkötelezettség. Git csak mozgatja a mutatót. Ha ez a viselkedés nem kívánatos, akkor a no-ff jelzővel létrehozhat egy új kötést az egyesítéshez.

Hogyan néz ki az egyesítés a gyors előre és anélkül

Gyors előretekerést követően a git előzményei a következőképpen fognak kinézni:

C0 -> C1 -> C2-> C3

Ugyanazon számú kötelezettségvállalás esetén itt van egy egyesítési előzmény gyors előretekerés nélkül:

Az első esetben nincs arra utaló jel, hogy bármilyen elágazás történt volna. A második esetben az előzmények egy C4 elkötelezettséget mutatnak, amely jelzi az egyesülés helyét.

Séta egy példán keresztül

Létrehoz egy git-adattárat, létrehoz egy ágat, majd megpróbálja az egyesítéseket gyors előre és anélkül.

1. szakasz: Beállítás

Először a következő lépésekkel hozhatja létre a git adattárat:

$ mkdir my_project
$ cd my_project
$ git init
$ érintse meg a.txt
$ git add -A
$ git kötelezettség -m "C0: a hozzáadása.txt "

Most hozzunk létre egy ágat, amelyet úgy hívunk: features, és hajtsunk végre néhány módosítást:

$ git ág jellemzői
$ git pénztár funkciók
$ érintés b.txt
$ git add -A
$ git elkövetés -m "C1: b hozzáadása.txt "
$ touch c.txt
$ git add -A
$ git kötelezettség -m "C2: c hozzáadása.txt "
$ touch d.txt
$ git add -A
$ git kötelezettség -m "C3: d hozzáadása.txt "

2. szakasz: Egyesítés gyors továbbítással

Térjünk vissza a master ághoz, és egyesítsük az ágakat:

$ git checkout master
$ git egyesítési funkciók

Kimenet:

08076fb frissítése… 9ee88eb
Előrepörgetés
b.txt | 0
c.txt | 0
d.txt | 0
3 fájl megváltozott, 0 beszúrás (+), 0 törlés (-)
létrehozási mód 100644 b.txt
létrehozási mód 100644 c.txt
létrehozási mód 100644 d.txt

Ha megnézi az előzményeket, a következőket fogja látni:

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

Tehát, az összes funkció a fiók ágból a fő ágban van. Ha folytatja a master módosítását, akkor nincs mód arra, hogy megtudja, mikor egyesítették a Features ágat.

3. szakasz: Gyors továbbítás nélkül

Ismételje meg az 1. szakaszt egy új mappához.

Ezután próbálja meg az egyesítést gyors továbbítás nélkül:

$ git checkout master
$ git merge --no-ff funkció

A következőket nyitja meg a git alapértelmezett szövegszerkesztőjében:

Fiók egyesítése
# Írjon be egy elkötelező üzenetet, hogy elmagyarázza, miért szükséges ez az egyesítés,
# főleg, ha egy frissített upstream-et egyesít egy témakörbe.
#
# A „#” betűvel kezdődő sorokat a rendszer figyelmen kívül hagyja, és egy üres üzenet megszakad
# az elkövetés.

Módosítsa a megjegyzéseket. Ebben az esetben egyszerűen hozzáadhatja a „C4:” szót az „Ágazati funkciók egyesítése” előtt. A kimenetnek így kell kinéznie:

Egyesítés a „rekurzív” stratégiával.
b.txt | 0
c.txt | 0
d.txt | 0
3 fájl megváltozott, 0 beszúrás (+), 0 törlés (-)
létrehozási mód 100644 b.txt
létrehozási mód 100644 c.txt
létrehozási mód 100644 d.txt

Ha megnézi az előzményeket, annak a következőképpen kell kinéznie:

$ git log - online
e071527 C4: Fiók egyesítése „jellemzők”
bb79c25 C3: d hozzáadása.txt
692bd8c C2: c hozzáadása.txt
a0df62a C1: b hozzáadása.txt
7575971 C0: a.txt

Láthatja, hogy annak ellenére, hogy pontosan ugyanazokat a változtatásokat hajtja végre, az egyesítésnek ez a verziója rendelkezik egy extra C4 elkötelezettséggel, ami azt jelenti, hogy a funkciók elágazása a master.

Következtetés

A git merge no-ff jelző segít az olvashatóbb előzmények létrehozásában. Lehetővé teszi olyan címkék elhelyezését, amelyek világosan mutatják az egyesülések helyét. Időt és energiát takaríthat meg a hibakeresés során.

A további vizsgálat:

Referenciák:
Hogyan lehet rögzíteni és streamelni a játékmenetét Linuxon
Korábban a játékokat csak hobbinak tekintették, de az idő múlásával a játékipar hatalmas növekedést ért el a technológia és a játékosok száma szempont...
A legjobb játékok kézi követéssel
Az Oculus Quest nemrégiben bemutatta a vezérlés nélküli kézi követés nagyszerű ötletét. Az egyre növekvő számú játékkal és tevékenységgel, amelyek tám...
Az OSD-fedvény megjelenítése teljes képernyős Linux-alkalmazásokban és játékokban
Teljes képernyős játékok lejátszása vagy alkalmazások figyelemelterelés nélküli, teljes képernyős módban történő használata elvághatja a panelen vagy ...