Jak Git uložit své změny s přidruženým jménem a najít ho později
Vývojáři často musí provádět více úkolů. Možná pracujete na nové funkci a může existovat požadavek na opravu chyby. Nebo můžete být hlavním vývojářem více projektů.
Když přepínáte mezi úkoly, někdy se nechcete dopustit nedokončené práce. V těchto případech může být skvělým pomocníkem příkaz git stash. Umožňuje vám ukládat změny a později se vrátit k nedokončené práci bez přidávání zbytečných závazků do vašich úložišť git.
Pracovní postup pro Git Stash
Pojďme inicializovat větev git master a potvrdit soubor ReadMe.txt.
$ mkdir my_project$ cd můj_projekt /
$ git init
$ touch ReadMe.txt
$ git přidat -A
$ git commit -m "Inicializovat"
Nyní přidejme další soubor s názvem a.txt do hlavní větve.
$ touch a.txt$ git přidat -A
$ git commit -m "Přidáno a.txt "
Pokud zkontrolujete historii, uvidíte:
$ git log - onlined79f7aa Přidáno a.txt
9434d7e Inicializovat
Nyní vytvořme větev feature1 a přidejme b.soubor txt:
$ git větev feature1Funkce $ git checkout1
$ touch b.txt
$ git přidat -A
$ git commit -m "Přidáno b.txt "
Otevřete b.soubor txt v editoru a vložte do řádku:
Chystám se to změnit na ..A uložte soubor. Pokud zkontrolujete svůj stav git, uvidíte následující:
stav $ gitNa větvi feature1
Změny, které nebyly provedeny pro potvrzení:
(použijte „git add
(použijte "git checkout." --
upraveno: b.txt
k potvrzení nebyly přidány žádné změny (použijte „git add“ a / nebo „git commit -a“)
Předpokládejme, že v této fázi dostanete požadavek na aktualizaci a.txt soubor na hlavní větvi. Ale s b. Jste ještě neskončili.soubor txt. Pokud se pokusíte zkontrolovat hlavní větev, zobrazí se následující chyba:
$ git pokladna masterchyba: Vaše místní změny v následujících souborech budou přepsány pokladnou:
b.txt
Než budete moci přepínat pobočky, potvrďte změny nebo je uložte.
Přerušení
Ale nechcete se dopustit nedokončené práce v b.txt. Git stash můžete použít v této situaci:
$ git skrýšUložený pracovní adresář a stav indexu WIP na feature1: 2cfe39b Přidáno b.txt
HEAD je nyní na 2cfe39b Přidáno b.txt
Pokud zaškrtnete b.txt, měl by být prázdný:
$ kočka b.txt$
Pokud zkontrolujete skrýš, uvidíte:
$ git stash seznamstash @ 0: WIP na feature1: 2cfe39b Přidáno b.txt
Pokud se pokusíte zkontrolovat hlavní větev, měli byste to udělat hned:
$ git pokladna masterPřepnuto na větev „master“
Předpokládejme, že na masteru provedete nezbytné změny a poté se vrátíte do větve feature1:
$ git pokladna feature1Vaše b.txt je stále prázdný:
$ kočka b.txt$
Pokud však získáte změny ze skrýši pomocí následujícího příkazu:
$ git stash platíNa větvi feature1
Změny, které nebyly provedeny pro potvrzení:
(použijte „git add
(použijte "git checkout." --
upraveno: b.txt
k potvrzení nebyly přidány žádné změny (použijte „git add“ a / nebo „git commit -a“)
Příkaz stash apply vzal skryté změny a použil je na b.soubor txt
Svou práci můžete dokončit v b.txt moje úprava linky
Na
Nyní pokračujte a proveďte změny:
$ git přidat -A$ git commit -m "Upraveno b.txt “
Použitím úkrytu se automaticky nevyčistí od úkrytu. Musíte to vyčistit ručně:
$ git stash dropZrušené doporučení / uložení @ 0 (0a66a16b32633e8d564d08e38254c491c1b1d3be)
Proč Git Stash s názvem?
Úložiště git je zásobník. Takže můžete své změny hromadit dál.
Předpokládejme, že do písmene b přidáte „X“.txt, uložte jej, přidejte „Y“ do b.txt, uložte jej a přidejte „Z“ do b.txt a schovat to. Pokud zkontrolujete historii ukládání, uvidíte něco jako toto:
$ git seznam[chráněno e-mailem] 0: WIP on feature1: 2d6f515 Modified b.txt
[chráněno e-mailem] 1: WIP na feature1: 2d6f515 Upraveno b.txt
[chráněno e-mailem] 2: WIP na feature1: 2d6f515 Upraveno b.txt
Nemáte způsob, jak zjistit, která skrýš má kterou změnu. Když se schováte, můžete použít možnost uložení k vložení komentářů. Pomocí komentářů můžete ke svému úkrytu připojit název a učinit je rozpoznatelnými:
$ git stash uložit "X"Uložený pracovní adresář a stav indexu Na feature1: X
HEAD je nyní na 2d6f515 Modified b.txt
Chcete-li přidat úpravy „X“, „Y“ a „Z“, můžete ve své skrýši získat pomocí možnosti uložení pro každou skrýš následující:
$ git stash seznamstash @ 0: Zapnuto feature1: Z
stash @ 1: Zapnuto feature1: Y
stash @ 2: Zapnuto feature1: X
Nyní máte název pro každou uloženou změnu. Název bohužel nemůžete použít k načtení skrýš. Budete muset použít skrýšové číslo. Předpokládejme, že chcete dosáhnout změny „Y“. Vidíte, že [chráněno e-mailem] 1 je Y. Tuto změnu tedy můžete použít ve své aktuální pobočce:
$ git stash použít stash @ 1A vaše b.txt by měl mít změny z [chráněno e-mailem] 1.
Stejnou metodu můžete použít k odložení úkrytu. Předpokládejme, že si uvědomíte, že X stash už nepotřebujete. K odstranění této skrýši můžete použít pouze následující příkaz:
$ git stash drop stash @ 2A skrýš by měla být pryč:
$ git seznamstash @ 0: Zapnuto feature1: Z
stash @ 1: Zapnuto feature1: Y
Nezapomeňte, že pokud použijete možnosti použití a přetažení bez jakýchkoli parametrů, použije se horní část zásobníku ([chráněno e-mailem] 0).
Závěr
Příkaz git stash je výkonný způsob, jak spravovat svůj pracovní prostor. Zvládnutí tohoto příkazu vám pomůže pracovat efektivněji.
Další studie:
- https: // git-scm.com / book / en / v1 / Git-Tools-Stashing
Reference:
Stack Overflow: how-to-name-and-retrieve-a-stash-by-name-in-git