Hogyan tárolhatja a változtatásokat társított névvel, és megtalálja azt utána
A fejlesztőknek gyakran többfeladatos feladatokat kell végrehajtaniuk. Lehet, hogy egy új funkción dolgozik, és kérhetik a hiba kijavítását. Vagy több projekt vezető fejlesztője lehet.
Amikor váltasz a feladatok között, néha nem akarsz befejezetlen munkát végezni. Ezekben az esetekben a git stash parancs nagy segítség lehet. Lehetővé teszi a változtatások halmozását, és később a befejezetlen munkához való visszatérést anélkül, hogy felesleges változtatásokat adna a git-adattáraihoz.
Munkafolyamat a Git Stash számára
Inicializáljuk a git master ágat, és végezzünk el egy fájlt a ReadMe fájlban.txt.
$ mkdir my_project$ cd my_project /
$ git init
$ érintse meg a ReadMe gombot.txt
$ git add -A
$ git kötelezettség -m "Inicializálás"
Most adjunk hozzá egy másik fájlt, a nevű.txt a mester ághoz.
$ érintse meg a.txt$ git add -A
$ git kötelezettség -m "Hozzáadva a.txt "
Ha megnézi az előzményeket, a következőket fogja látni:
$ git log - onlined79f7aa Hozzáadva a.txt
9434d7e Inicializálás
Most hozzunk létre egy feature1 elágazást, és adjunk hozzá egy b-t.txt fájl:
$ git elágazás funkció1$ git checkout funkció1
$ érintés b.txt
$ git add -A
$ git kötelezettség -m "Hozzáadva b.txt "
Nyissa meg a b.txt fájlt egy szerkesztőben, és tedd a sorba:
Én hamarosan megváltoztatom ezt:És mentse a fájlt. Ha ellenőrzi a git állapotát, a következőket látja:
$ git állapotAz elágazás jellemzőjén1
Az elkövetéshez nem rendezett változások:
(használja a "git add
(használja a "git checkout --
módosítva: b.txt
Nincs változás hozzáadva az elköteleződéshez (használja a "git add" és / vagy a "git kötelezettség -a" -t)
Tegyük fel, hogy ebben a szakaszban kérést kap az a frissítésére.txt fájl a fő ágon. De még nem végzett a b-vel.txt fájl. Ha megpróbálja megnézni a fő ágat, a következő hibát kapja:
$ git checkout masterhiba: A következő fájlok helyi módosításait felülírja a fizetés:
b.txt
Kérjük, hajtsa végre a változtatásokat, vagy tárolja azokat, mielőtt fiókot válthatna.
Megszakítás
De nem akarja elvégezni a befejezetlen munkát a b-ben.txt. Ebben a helyzetben használhatja a git retashet:
$ git stashMentett munkakönyvtár és indexállapotú WIP a feature1-n: 2cfe39b Hozzáadva b.txt
A HEAD most a 2cfe39b címen van Hozzáadva b.txt
Ha bejelöli b.txt, üresnek kell lennie:
$ macska b.txt$
Ha ellenőrzi a rejtekhelyet, a következőket fogja látni
$ git stash liststash @ 0: WIP on feature1: 2cfe39b Hozzáadva b.txt
Ha megpróbálja megnézni a fő ágat, akkor most képesnek kell lennie erre:
$ git checkout masterÁtállt a "master" fiókra
Tegyük fel, hogy elvégzi a szükséges módosításokat a masteren, majd visszatér a feature1 ághoz:
$ git checkout funkció1A b.A txt még mindig üres:
$ macska b.txt$
De ha a tárolást a következő paranccsal kapja meg:
$ git stash érvényesAz elágazás jellemzőjén1
Az elkövetéshez nem rendezett változások:
(használja a "git add
(használja a "git checkout --
módosítva: b.txt
Nincs változás hozzáadva az elköteleződéshez (használja a "git add" és / vagy a "git kötelezettség -a" -t)
A Stash Apply parancs végrehajtotta az elrejtett módosításokat és alkalmazta b-re.txt fájl
A b-ben befejezheti munkáját.txt módosítom a sort
Nak nek
Most folytassa és hajtsa végre a változtatásokat:
$ git add -A$ git elkövetés -m "módosított b.txt ”
A tároló alkalmazása nem távolítja el automatikusan a tárolóból. Manuálisan kell kitisztítani:
$ git rejtett cseppLebukott refs / stash @ 0 (0a66a16b32633e8d564d08e38254c491c1b1d3be)
Miért Git Stash névvel?
A git stash verem. Tehát folyamatosan halmozhatja változásait.
Tegyük fel, hogy „X” -t ad a b-hez.txt, tedd el, adj egy „Y” -t a b-hez.txt, tegye el, és adjon hozzá egy „Z” -t a b-hez.txt és tedd el. Ha megnézi a rejtett előzményeket, valami ilyesmit fog látni:
$ git stash list[e-mail védett] 0: WIP on feature1: 2d6f515 Módosítva b.txt
[e-mail védett] 1: WIP on feature1: 2d6f515 Módosítva b.txt
[e-mail védett] 2: WIP on feature1: 2d6f515 Módosítva b.txt
Önnek nincs módja tudni, hogy melyik rejtvény melyik változáson ment keresztül. Ha stagnál, a mentés opcióval megjegyzéseket tehet. A megjegyzések segítségével nevet csatolhat a tárhelyéhez, és felismerhetővé teheti őket:
$ git stash "X" mentéseMentett munkakönyvtár és indexállapot On feature1: X
A HEAD most a 2d6f515 címen van módosítva. B.txt
Az „X”, „Y” és „Z” módosítások hozzáadásához az alábbiakat kaphatja tárolójában az egyes tárolások mentési opciójával:
$ git stash listrejtés @ 0: Az 1. szolgáltatáson: Z
rejtés @ 1: Az 1. szolgáltatáson: Y
rejtés @ 2: Az 1. szolgáltatáson: X
Most minden egyes eltüntetett változáshoz megad egy nevet. Sajnos nem használhatja a nevet a tárolás lekérésére. Használnia kell a rejtett számot. Tegyük fel, hogy meg akarja szerezni az „Y” változását. Látja, hogy az [email protected] 1 Y. Tehát alkalmazhatja ezt a változást a jelenlegi fiókjára:
$ git stash @ stash @ @ 1És a b.A txt-nek tartalmaznia kell az [email protected] 1 módosításait.
Ugyanazzal a módszerrel használhatja az elrejtést. Tegyük fel, hogy rájössz, hogy többé nincs szüksége az X-re. Csak a következő paranccsal törölheti az elrejtést:
$ git stash drop stash @ 2És a rejtekhelynek el kell tűnnie:
$ git stash listrejtés @ 0: Az 1. szolgáltatáson: Z
rejtés @ 1: Az 1. szolgáltatáson: Y
Ne feledje, hogy ha az Apply és drop opciókat paraméterek nélkül használja, akkor a verem tetejét fogja használni ([email protected] 0).
Következtetés
A git stash parancs hatékony módja a munkaterület kezelésének. A parancs elsajátítása elősegíti a hatékonyabb munkát.
A további vizsgálat:
- https: // git-scm.com / book / en / v1 / Git-Tools-Stashing
Referenciák:
Verem túlcsordulás: hogyan lehet nevet adni és visszakeresni egy név szerint-név szerint