Git

Ako Squash Git potvrdzuje

Ako Squash Git potvrdzuje

Ako vykonať Squash v Gite, aby bola vaša história čistá

Keď pracujete s Gitom, je dobré sa často zaviazať, takže ak sa pokazíte, môžete sa kedykoľvek vrátiť do stavu kódu. Nie vždy je však dobré venovať sa týmto mini zmenám v hlavnej vetve. Vďaka tomu je história chaotická a ťažko sledovateľná.

Git poskytuje spôsob, ako stlačiť hromadu vašich záväzkov pomocou príkazu rebase. Keď ste lokálne vykonali zmeny v konkrétnom súbore alebo v konkrétnej funkcii, môžete kedykoľvek použiť kombinovanú metódu squash a kombinovať zmeny predtým, ako sa prihlásite do hlavnej vetvy. Toto pomôže ostatným lepšie pochopiť vaše zmeny.

Upozornenie: Aj keď môžete sťahovať z externých úložísk a squash sa zaväzuje spoločne, je to zlý nápad. Môže to spôsobiť konflikty a zmätok. Vyvarujte sa zmene histórie, ktorá je už verejná. Držte sa iba stlačenia záväzkov, ktoré sú miestne pre vašu prácu.

Prejdime si príklad.

Predpokladajme, že máme dva súbory a.py a b.py. Poďme si najskôr prejsť procesom vytvárania súborov a vykonávania úprav:

$ mkdir môjprojekt
$ cd myproject /
$ git init
$ echo "print (" ahoj A ")"> a.py
$ git add -A && git commit -m "Pridané a.py "
$ echo "print (" ahoj B ")"> b.py
$ git add -A && git commit -m "Pridané b.py "
$ echo "print (" ahoj BB ")"> b.py
$ git add -A && git commit -m "b.py Úprava 1 "
$ echo "print (" ahoj BBB ")"> b.py
$ git add -A && git commit -m "b.py Úprava 2 "

Ak skontrolujeme históriu záväzkov, zobrazí sa nám toto:

$ git log --oneline --graph - ozdobiť
* dfc0295 (HLAVA -> pán) b.py Úprava 2
* ce9e582 b.py Úprava 1
* 7a62538 Pridané b.py
* 952244a Pridané a.py

Po dokončení našej práce sa rozhodneme vykonať všetky zmeny v písmene b.py do jedného potvrdenia kvôli jasnosti. Počítame, že na b sú 3 potvrdenia.py z HLAVY. Vydáme nasledujúci príkaz:

git rebase -i HLAVA ~ 3

Možnosť -i povie Gitu, aby použil interaktívny režim.

Malo by sa zobraziť okno vo vašom textovom editore Git:

výber 7a62538 Pridané b.py
vyber ce9e582 b.py Úprava 1
vybrať dfc0295 b.py Úprava 2
 
# Rebase 952244a ... dfc0295 na 952244a (3 príkazy)
#
# Príkazy:
# p, výber = použitie potvrdenia
# r, reword = použiť potvrdenie, ale upraviť správu o potvrdení
# e, edit = použiť potvrdenie, ale prestať s úpravami
# s, squash = použiť potvrdenie, ale zlúčiť sa do predchádzajúceho potvrdenia
# f, fixup = ako „squash“, ale zahoďte denníkovú správu tohto potvrdenia
# x, exec = spustiť príkaz (zvyšok riadku) pomocou shellu
#
# Tieto riadky je možné znovu objednať; vykonávajú sa zhora nadol.
#
# Ak tu odstránite riadok, TENTO ZÁVÄZOK BUDE STRATY.
#
# Ak však odstránite všetko, rebase sa zruší.
#
# Upozorňujeme, že prázdne potvrdenia sú komentované
~

Záväzky sú zoradené chronologicky od najvyššieho po najaktuálnejšie. Môžete si zvoliť, ktorý výber sa zaviaže a ktorý sa zaviaže squash. Pre jednoduchosť vyberieme prvý commit a zvyšok doň zmačkáme. Text teda upravíme takto:

výber 7a62538 Pridané b.py
squash ce9e582 b.py Úprava 1
squash dfc0295 b.py Úprava 2
 
# Rebase 952244a ... dfc0295 na 952244a (3 príkazy)
#
# Príkazy:
# p, výber = použitie potvrdenia
# r, reword = použiť potvrdenie, ale upraviť správu o potvrdení
# e, edit = použiť potvrdenie, ale prestať s úpravami
# s, squash = použiť potvrdenie, ale zlúčiť sa do predchádzajúceho potvrdenia
# f, fixup = ako „squash“, ale zahoďte denníkovú správu tohto potvrdenia
# x, exec = spustiť príkaz (zvyšok riadku) pomocou shellu
#
# Tieto riadky je možné znovu objednať; vykonávajú sa zhora nadol.
#
# Ak tu odstránite riadok, TENTO ZÁVÄZOK BUDE STRATENÝ.
#
# Ak však odstránite všetko, rebase sa zruší.
#
# Upozorňujeme, že prázdne potvrdenia sú komentované

Hneď ako uložíte a zatvoríte textový súbor, malo by sa vysunúť ďalšie textové okno, ktoré vyzerá takto:

# Toto je kombinácia 3 záväzkov.
# Správa prvého potvrdenia je:
Pridané b.py
 
# Toto je druhá správa o odovzdaní:
 
b.py Úprava 1
 
# Toto je tretia správa o potvrdení:
 
b.py Úprava 2
 
# Zadajte správu o potvrdení zmien. Začínajú sa riadky
# s '#' bude ignorované a prázdna správa preruší potvrdenie.
#
# Dátum: Pi 30. marca 21:09:43 2018 -0700
#
# prebieha rebase; na 952244a
# Momentálne upravujete potvrdenie, zatiaľ čo rebasujete pobočku „master“ na „952244a“.
#
# Zmeny, ktoré je potrebné vykonať:
# Nový súbor: b.py
#

Uložte a zatvorte aj tento súbor. Mali by ste vidieť niečo také:

$ git rebase -i HLAVA ~ 3
[odpojená HLAVA 0798991] Pridané b.py
Dátum: Pi 30. marca 21:09:43 2018 -0700
1 súbor zmenený, 1 vloženie (+)
režim vytvorenia 100644 b.py
Úspešne rebasované a aktualizované refs / heads / master.

Ak teraz skontrolujete históriu potvrdenia:

$ git log --oneline --graph - ozdobiť
* 0798991 (HLAVA -> pán) Pridané b.py
* 952244a Pridané a.py

Všetky záväzky za b.py boli stlačené do jedného spáchania. Môžete overiť pohľadom na b.súbor py:

$ mačka b.py
print („ahoj BBB“)

Má obsah úpravy 2.

Záver

Rebase je mocný príkaz. Môže vám pomôcť udržiavať čistú históriu. Nepoužívajte ho však na už zverejnené záväzky, pretože by to mohlo spôsobiť konflikty a zmätok. Používajte ho iba pre svoje vlastné miestne úložisko.

Ďalšie štúdium:

Hry Nainštalujte si najnovší Dolphin Emulator pre Gamecube a Wii na Linuxe
Nainštalujte si najnovší Dolphin Emulator pre Gamecube a Wii na Linuxe
Emulátor Dolphin vám umožní hrať vybrané hry Gamecube a Wii na osobných počítačoch Linux (PC). Emulátor Dolphin, ktorý je voľne dostupným emulátorom ...
Hry Ako používať GameConqueror Cheat Engine v Linuxe
Ako používať GameConqueror Cheat Engine v Linuxe
Tento článok obsahuje sprievodcu používaním cheatovacieho modulu GameConqueror v systéme Linux. Mnoho používateľov, ktorí hrajú hry v systéme Windows,...
Hry Najlepšie emulátory herných konzol pre systém Linux
Najlepšie emulátory herných konzol pre systém Linux
V tomto článku je uvedený zoznam populárneho softvéru na emuláciu herných konzol, ktorý je k dispozícii pre systém Linux. Emulácia je vrstva kompatibi...