Git

Jak Squash Git potvrzuje

Jak Squash Git potvrzuje

Jak provádět Squash v Git, aby byla vaše historie čistá

Když pracujete s Gitem, je dobré se zavázat často, takže pokud se pokazíte, můžete se vždy vrátit do stavu kódu. Avšak provádění všech těchto mini-změn v hlavní větvi není vždy dobrý nápad. Dělá historii chaotickou a těžko sledovatelnou.

Git poskytuje způsob, jak zmáčknout spoustu vašich závazků pomocí příkazu rebase. Jakmile lokálně provedete změny v konkrétním souboru nebo pro konkrétní funkci, můžete vždy použít metodu squash ke kombinování změn společně, než se zavážete k hlavní větvi. To pomůže ostatním lépe pochopit vaše změny.

Varování: I když můžete stahovat z externích úložišť a squashové revize společně, je to špatný nápad. Může vytvářet konflikty a zmatek. Neměňte historii, která je již veřejná. Držte se pouze zmáčknutí závazků, které jsou pro vaši práci lokální.

Projdeme si příklad.

Předpokládejme, že máme dva soubory a.py a b.py. Pojďme nejprve projít procesem vytváření souborů a provádění úprav:

$ mkdir můj projekt
$ cd myproject /
$ git init
$ echo "print (" ahoj A ")"> a.py
$ git add -A && git commit -m "Přidáno a.py "
$ echo "print (" ahoj B ")"> b.py
$ git add -A && git commit -m "Přidáno b.py "
$ echo "print (" ahoj BB ")"> b.py
$ git add -A && git commit -m "b.py Modifikace 1 "
$ echo "print (" ahoj BBB ")"> b.py
$ git add -A && git commit -m "b.py Modifikace 2 "

Pokud zkontrolujeme historii revizí, uvidíme následující:

$ git log --oneline --graph - ozdobit
* dfc0295 (HEAD -> master) b.py Modifikace 2
* ce9e582 b.py Modifikace 1
* 7a62538 Přidáno b.py
* 952244a Přidáno a.py

Po dokončení práce se rozhodneme provést všechny změny b.py do jednoho potvrzení pro jasnost. Počítáme, že na b jsou 3 závazky.py z HLAVY. Vydáme následující příkaz:

git rebase -i HLAVA ~ 3

Možnost -i řekne Gitu, aby použil interaktivní režim.

Mělo by se objevit okno ve vašem textovém editoru Git:

výběr 7a62538 Přidáno b.py
vyberte ce9e582 b.py Modifikace 1
vyberte dfc0295 b.py Modifikace 2
 
# Rebase 952244a… dfc0295 na 952244a (3 příkazy)
#
# Příkazy:
# p, pick = použít potvrzení
# r, reword = použít potvrzení, ale upravit zprávu potvrzení
# e, edit = použít potvrzení, ale zastavit změny
# s, squash = použít potvrzení, ale sloučit do předchozího potvrzení
# f, fixup = jako „squash“, ale zahoďte zprávu protokolu tohoto potvrzení
# x, exec = run (zbytek řádku) pomocí shellu
#
# Tyto řádky lze znovu objednat; jsou prováděny shora dolů.
#
# Pokud zde odeberete řádek, TENTO POVINNOST ZTRACÍ.
#
# Pokud však vše odstraníte, rebase bude zrušena.
#
# Všimněte si, že prázdné závazky jsou komentovány
~

Závazky jsou řazeny chronologicky nahoře od nejstaršího po nejnovější. Můžete si vybrat, který závazek k „výběru“ a který se zaváže ke squashu. Pro zjednodušení vybereme první potvrzení a zbytek do něj zmáčkneme. Text tedy upravíme takto:

výběr 7a62538 Přidáno b.py
squash ce9e582 b.py Modifikace 1
squash dfc0295 b.py Modifikace 2
 
# Rebase 952244a… dfc0295 na 952244a (3 příkazy)
#
# Příkazy:
# p, pick = použít potvrzení
# r, reword = použít potvrzení, ale upravit zprávu potvrzení
# e, edit = použít potvrzení, ale zastavit změny
# s, squash = použít potvrzení, ale sloučit do předchozího potvrzení
# f, fixup = jako „squash“, ale zahoďte zprávu protokolu tohoto potvrzení
# x, exec = run (zbytek řádku) pomocí shellu
#
# Tyto řádky lze znovu objednat; jsou prováděny shora dolů.
#
# Pokud zde odeberete řádek, TENTO POVINNOST BUDE ZTRACEN.
#
# Pokud však vše odstraníte, rebase bude zrušena.
#
# Všimněte si, že prázdné závazky jsou komentovány

Jakmile textový soubor uložíte a zavřete, mělo by se zobrazit další textové okno, které vypadá takto:

# Toto je kombinace 3 závazků.
# Zpráva prvního potvrzení je:
Přidáno b.py
 
# Toto je druhá zpráva potvrzení:
 
b.py Modifikace 1
 
# Toto je třetí zpráva o odevzdání:
 
b.py Modifikace 2
 
# Zadejte prosím zprávu o potvrzení změn. Řádky začínají
# s '#' bude ignorováno a prázdná zpráva zruší potvrzení.
#
# Datum: Pá 30. března 21:09:43 2018-0700
#
# probíhá rebase; na 952244a
# Aktuálně upravujete potvrzení, zatímco rebasujete větev „master“ na „952244a“.
#
# Provedené změny:
# Nový soubor: b.py
#

Uložte a zavřete také tento soubor. Měli byste vidět něco takového:

$ git rebase -i HLAVA ~ 3
[oddělená HLAVA 0798991] Přidáno b.py
Datum: Pá 30. března 21:09:43 2018-0700
1 soubor změněn, 1 vložení (+)
vytvořit režim 100644 b.py
Úspěšně rebased a aktualizováno refs / heads / master.

Pokud nyní zkontrolujete historii potvrzení:

$ git log --oneline --graph - ozdobit
* 0798991 (HLAVA -> pán) Přidáno b.py
* 952244a Přidáno a.py

Všechny závazky pro b.py byly zmáčknuty do jednoho potvrzení. Můžete ověřit pohledem na b.py soubor:

$ kočka b.py
tisk („ahoj BBB“)

Má obsah úpravy 2.

Závěr

Rebase je mocný příkaz. Může vám pomoci udržovat historii čistou. Ale vyhněte se použití pro již veřejné závazky, protože to může způsobit konflikty a zmatek. Používejte jej pouze pro své vlastní místní úložiště.

Další studie:

Hry Jak používat GameConqueror Cheat Engine v Linuxu
Jak používat GameConqueror Cheat Engine v Linuxu
Tento článek popisuje průvodce používáním cheatovacího modulu GameConqueror v systému Linux. Mnoho uživatelů, kteří hrají hry v systému Windows, často...
Hry Nejlepší emulátory herních konzolí pro Linux
Nejlepší emulátory herních konzolí pro Linux
Tento článek uvádí seznam populárního softwaru pro emulaci herních konzolí, který je k dispozici pro Linux. Emulace je vrstva softwarové kompatibility...
Hry Nejlepší linuxové distribuce pro hraní her v roce 2021
Nejlepší linuxové distribuce pro hraní her v roce 2021
Operační systém Linux má za sebou dlouhou cestu od svého původního, jednoduchého vzhledu založeného na serveru. Tento OS se v posledních letech nesmír...