Git

Git Merge -no-ff Option

Git Merge -no-ff Option

Pochopenie možnosti Git Merge no-ff

Jednou z jeho silných stránok je schopnosť ľahkého zlúčenia git. Počas zlúčenia git použije zlúčenie rýchlo dopredu, keď si všimne, že HEAD aktuálnej vetvy je predchodcom potvrdenia, ktoré sa pokúšate zlúčiť. Pri zlúčení rýchlo dopredu nie je potrebné nové potvrdenie. Git iba posúva ukazovateľ. Ak toto správanie nie je žiaduce, môžete pomocou príznaku no-ff vytvoriť nové potvrdenie pre zlúčenie.

Ako vyzerá zlúčenie rýchlo a dopredu a bez neho

Po rýchlom prechode dopredu bude vaša história systému git vyzerať takto:

C0 -> C1 -> C2-> C3

Pri rovnakom počte záväzkov je tu aj história zlúčenia bez pretáčania dopredu:

V prvom prípade nič nenasvedčuje tomu, že by došlo k nejakému rozvetveniu. V druhom prípade história zobrazuje záväzok C4, ktorý indikuje, kde došlo k zlúčeniu.

Prechádzka príkladom

Vytvoríte úložisko git, vytvoríte vetvu a potom vyskúšate zlúčenie s rýchlym posunom dopredu a bez neho.

Oddiel 1: Nastavenie

Najskôr môžete vytvoriť úložisko git pomocou nasledujúcich krokov:

$ mkdir môj_projekt
$ cd môj_projekt
$ git init
$ dotyk a.TXT
$ git pridať -A
$ git commit -m "C0: Pridanie a.TXT"

Teraz vytvorme vetvu nazvanú funkcie a urobme niekoľko zmien:

$ git funkcie pobočky
Funkcie pokladnice $ git
$ dotyk b.TXT
$ git pridať -A
$ git commit -m "C1: Pridanie b.TXT"
$ dotyk c.TXT
$ git pridať -A
$ git commit -m "C2: Pridanie c.TXT"
$ dotyk d.TXT
$ git pridať -A
$ git commit -m "C3: Pridanie d.TXT"

Oddiel 2: Zlúčenie s rýchlym preposielaním

Vráťme sa k hlavnej vetve a zlúčime do nej vetvu funkcií:

$ git pokladňa, majster
Funkcie $ git merge

Výkon:

Aktualizuje sa 08076fb… 9ee88eb
Rýchlo vpred
b.txt | 0
c.txt | 0
d.txt | 0
3 súbory zmenené, 0 vložení (+), 0 odstránení (-)
režim vytvorenia 100644 b.TXT
režim vytvorenia 100644 c.TXT
režim vytvorenia 100644 d.TXT

Ak skontrolujete históriu, uvidíte:

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

Takže všetky potvrdenia z vetvy funkcií sú teraz v hlavnej vetve. Ak budete pokračovať v zmenách v predlohe, neexistuje žiadny spôsob, ako zistiť, kedy bola do nej zlúčená vetva funkcií.

Oddiel 3: Bez rýchleho preposielania

Zopakujte časť 1 pre nový priečinok.

Potom vyskúšajte zlúčenie bez rýchleho preposielania:

$ git pokladňa, majster
$ git merge --no-ff funkcia

V predvolenom textovom editore vášho gitu sa otvorí toto:

Zlúčiť vetvu 'funkcie'
# Zadajte správu na potvrdenie, aby ste vysvetlili, prečo je toto zlúčenie potrebné,
# najmä ak zlúči aktualizovaný upstream do tematickej vetvy.
#
# Riadky začínajúce sa „#“ budú ignorované a prázdna správa sa preruší
# spáchať.

Upravte komentáre. V takom prípade stačí pridať „C4:“ pred „Funkcie zlúčenia vetvy“ “. Výstup by mal vyzerať takto:

Zlúčenie uskutočnené pomocou „rekurzívnej“ stratégie.
b.txt | 0
c.txt | 0
d.txt | 0
3 súbory zmenené, 0 vložení (+), 0 odstránení (-)
režim vytvorenia 100644 b.TXT
režim vytvorenia 100644 c.TXT
režim vytvorenia 100644 d.TXT

Ak teraz skontrolujete históriu, mala by vyzerať takto:

$ git log - online
e071527 C4: Zlúčiť vetvu 'vlastnosti'
bb79c25 C3: Pridanie d.TXT
692bd8c C2: Pridanie c.TXT
a0df62a C1: Pridanie b.TXT
7575971 C0: Pridanie a.TXT

Vidíte, že aj keď máte úplne rovnaké zmeny, táto verzia zlúčenia má extra potvrdenie C4, ktoré znamená zlúčenie vetvy funkcií do hlavnej.

Záver

Príznak git merge no-ff pomáha vytvárať čitateľnejšiu históriu. Umožňuje vám umiestniť značky, ktoré jasne ukazujú, kde došlo k zlúčeniu. Môže vám to ušetriť čas a úsilie pri ladení.

Ďalšie štúdium:

Referencie:
Ako zmeniť veľkosť, farbu a schému ukazovateľa myši a kurzora v systéme Windows 10
Ukazovateľ myši a kurzor vo Windows 10 sú veľmi dôležité aspekty operačného systému. Dá sa to povedať aj pre iné operačné systémy, takže v skutočnosti...
Hry Zadarmo a open source herné motory pre vývoj hier pre Linux
Zadarmo a open source herné motory pre vývoj hier pre Linux
Tento článok sa bude zaoberať zoznamom bezplatných a otvorených herných nástrojov, ktoré možno použiť na vývoj 2D a 3D hier v systéme Linux. Existuje ...
Hry Výukový program Shadow of the Tomb Raider pre Linux
Výukový program Shadow of the Tomb Raider pre Linux
Shadow of the Tomb Raider je dvanásty prírastok do série Tomb Raider - franšíza akčných adventúr vytvorená Eidosom Montrealom. Túto hru prijali kritic...