Git

Hogyan lehet Squash Git elkötelezni

Hogyan lehet Squash Git elkötelezni

Hogyan kell Squash-et elköteleznünk a Git-ben, hogy tisztán tartsuk az előzményeket

Amikor a Gittel dolgozol, érdemes gyakran elkötelezned magad, így ha elrontod, mindig visszatérhetsz a kód állapotához. Azonban ezeknek a mini-változtatásoknak a fő ágra történő végrehajtása nem mindig jó ötlet. Rendetlenné és nehezen követhetővé teszi a történelmet.

A Git lehetőséget nyújt egy csomó elkötelezettség összezárására a rebase paranccsal. Miután helyileg elvégezte a módosításokat egy adott fájlban vagy egy adott szolgáltatásban, mindig használhatja a squash metódust a változások egyesítéséhez, mielőtt elkötelezi magát a fő ág felé. Ez segít másoknak jobban megérteni a változtatásokat.

Figyelmeztetés: Annak ellenére, hogy külső tárolókból is kivonulhat, és a squash együtt elkötelezheti magát, ez rossz ötlet. Konfliktusokat és zavart okozhat. Kerülje a már nyilvános történelem megváltoztatását. Csak ragaszkodjon a munkája szempontjából helyi összecsapásokhoz.

Nézzünk át egy példát.

Tegyük fel, hogy két fájlunk van a.py és b.py. Vizsgáljuk meg először a fájlok létrehozásának és a módosítások végrehajtásának folyamatát:

$ mkdir myproject
$ cd myproject /
$ git init
$ echo "print (" hello A ")"> a.py
$ git add -A && git kötelezettség -m "Hozzáadva a.py "
$ echo "print (" hello B ")"> b.py
$ git add -A && git kötelezettség -m "Hozzáadva b.py "
$ echo "print (" hello BB ")"> b.py
$ git add -A && git elkötelezettség -m "b.py 1. módosítás "
$ echo "print (" hello BBB ")"> b.py
$ git add -A && git elkötelezettség -m "b.py 2. módosítás "

Ha ellenőrizzük az elkövetések előzményeit, a következőket fogjuk látni:

$ git log --oneline --graph --dekorál
* dfc0295 (HEAD -> master) b.py 2. módosítás
* ce9e582 b.py 1. módosítás
* 7a62538 Hozzáadva b.py
* 952244a Hozzáadva a.py

Miután elvégeztük a munkánkat, úgy döntünk, hogy az összes változtatást ab-ra helyezzük.py az egyértelműség érdekében egyetlen elkötelezettséggel. Úgy számítunk, hogy 3 elkövetés van a b-n.py a FEJ felől. A következő parancsot adjuk ki:

git rebase -i FEJ ~ 3

Az -i opció megmondja Gitnek, hogy használja az interaktív módot.

Fel kell ugrania egy ablakkal a Git szövegszerkesztőjén:

pick 7a62538 Hozzáadva b.py
válasszon ce9e582 b.py 1. módosítás
pick dfc0295 b.py 2. módosítás
 
# Újraindítsa a 952244a ... dfc0295 fájlt a 952244a eszközre (3 parancs)
#
# Parancsok:
# p, pick = felhasználás végrehajtása
# r, reword = használd az elkötelezettséget, de szerkeszd az elköteleződés üzenetét
# e, edit = use activ, de állítsa le a módosítást
# s, squash = felhasználás elkötelezettség, de beleolvadt a korábbi elkötelezettségbe
# f, fixup = mint a "squash", de dobja el az elkötelezett naplóüzenetét
# x, exec = run parancs (a sor többi része) shell használatával
#
# Ezek a sorok újrarendezhetők; fentről lefelé hajtják végre.
#
# Ha itt eltávolít egy sort, akkor a KÖTELEZETTSÉG VESZT.
#
# Ha azonban mindent eltávolít, akkor az újrabázis törlésre kerül.
#
# Ne feledje, hogy az üres elkötelezettségeket megjegyzik
~

Az elkövetések a legkorábbi és a legfrissebb között időrendi sorrendben vannak felsorolva. Kiválaszthatja, melyik elkötelezettséget választja a „válogatásra”, és melyik a selejtezést. Az egyszerűség kedvéért kiválasztjuk az első elkötelezettséget, a többit pedig belenyomjuk. Tehát a szöveget így módosítjuk:

pick 7a62538 Hozzáadva b.py
tök ce9e582 b.py 1. módosítás
tök dfc0295 b.py 2. módosítás
 
# Újraindítsa a 952244a ... dfc0295 fájlt a 952244a eszközre (3 parancs)
#
# Parancsok:
# p, pick = felhasználás végrehajtása
# r, reword = használd az elköteleződést, de szerkeszd az elköteleződés üzenetét
# e, edit = use activ, de állítsa le a módosítást
# s, squash = felhasználás elkötelezettség, de beleolvadt a korábbi elkötelezettségbe
# f, fixup = hasonló a "tökhöz", de dobja el az elkötelezett naplóüzenetét
# x, exec = run parancs (a sor többi része) shell használatával
#
# Ezek a sorok újrarendezhetők; fentről lefelé hajtják végre.
#
# Ha itt eltávolít egy sort, akkor a KÖTELEZETTSÉG VESZT.
#
# Ha azonban mindent eltávolít, akkor az újrabázis törlésre kerül.
#
# Ne feledje, hogy az üres kötelezettségvállalásokat megjegyzik

Amint elmenti és bezárja a szövegfájlt, megjelenik egy másik szövegablak, amely így néz ki:

# Ez 3 elkövetés kombinációja.
# Az első kötelezettségvállalás üzenete a következő:
Hozzáadva b.py
 
# Ez a 2. kötelezettségvállalási üzenet:
 
b.py 1. módosítás
 
# Ez a 3. kötelezettségvállalási üzenet:
 
b.py 2. módosítás
 
# Kérjük, adja meg a változtatásokat elkövető üzenetet. Vonalak indulnak
A # a # jelzéssel együtt figyelmen kívül marad, és egy üres üzenet megszakítja a végrehajtást.
#
# Dátum: péntek március 30, 21:09:43 2018 -0700
#
# újrabázis folyamatban; rá a 952244a
# Jelenleg egy kötelezettségvállalást szerkeszt, miközben a „master” ágat újrázza a „952244a” eszközön.
#
# Elkövetendő változtatások:
# Új fájl: b.py
#

Mentse és zárja be ezt a fájlt is. Valami ilyesmit kellene látnia:

$ git rebase -i FEJ ~ 3
[levált HEAD 0798991] Hozzáadva b.py
Időpont: péntek március 30, 21:09:43, 2018 -0700
1 fájl megváltozott, 1 beszúrás (+)
létrehozási mód 100644 b.py
Sikeresen újrabázolt és frissített refs / heads / master.

Ha most ellenőrzi a végrehajtási előzményeket:

$ git log --oneline --graph --dekorál
* 0798991 (HEAD -> master) Hozzáadva b.py
* 952244a Hozzáadva a.py

B minden kötelezettségvállalása.py-t egyetlen elkötelezettséggé zárták össze. Ellenőrizheti a b.py fájl:

$ macska b.py
nyomtatás ("hello BBB")

A 2. módosítás tartalmát tartalmazza.

Következtetés

A rebase egy erőteljes parancs. Ez segíthet az előzmények tisztán tartásában. De kerülje a használatát már nyilvános kötelezettségekhez, mivel konfliktusokat és zavart okozhat. Csak saját helyi adattárának használja.

A további vizsgálat:

OpenTTD bemutató
Az OpenTTD az egyik legnépszerűbb üzleti szimulációs játék. Ebben a játékban létre kell hoznia egy csodálatos szállítási vállalkozást. Azonban kezdete...
SuperTuxKart Linuxhoz
A SuperTuxKart egy nagyszerű cím, amelynek célja, hogy ingyenesen hozza el a Mario Kart élményét Linux rendszerén. Elég kihívást jelentő és szórakozta...
Csata a Wesnoth bemutatóért
A Battle for Wesnoth az egyik legnépszerűbb nyílt forráskódú stratégiai játék, amelyet jelenleg játszhatsz. Ez a játék nem csak nagyon hosszú ideje fe...