Git Stash z imieniem

Git Stash z imieniem

Jak dawać zebranie zmian za pomocą powiązanej nazwy i znaleźć je później

Deweloperzy często muszą wielozadaniowości. Możesz pracować nad nową funkcją i może być prośba o naprawę błędu. Lub możesz być głównym programistą wielu projektów.

Kiedy przełączasz się między zadaniami, czasami nie chcesz popełnić niedokończonej pracy. W takich przypadkach polecenie Git Stash może być wielką pomocą. Pozwala na układanie zmian, a później wrócić do niedokończonej pracy bez dodawania niepotrzebnych zatwierdzeń do repozytoriów GIT.

Przepływ pracy dla Git Stash

Zainicjujmy oddział GIT Master i popełnij readme pliku.tekst.

$ mkdir my_project
$ cd my_project/
$ git init
$ Touch Readme.tekst
$ git add -a
$ git commit -m „inicjalizuj”

Teraz dodajmy kolejny plik o nazwie A.TXT do gałęzi głównej.

$ dotyk a.tekst
$ git add -a
$ git commit -m "dodał.tekst"

Jeśli sprawdzisz historię, zobaczysz:

$ git log -linia
D79F7AA dodał a.tekst
9434d7e inicjalizuj

Teraz utwórzmy gałąź funkcji 1 i dodajmy B.plik txt:

Funkcja oddziału $ git1
Funkcja $ git kector1
$ touch b.tekst
$ git add -a
$ git commit -m "dodał b.tekst"

Otwórz swój b.plik txt w edytorze i umieść w wierszu:

Mam zamiar to zmienić na…

I zapisz plik. Jeśli sprawdzisz swój status GIT, zobaczysz następujące:

Status $ git
Na funkcji oddziału 1
Zmiany nie zostały zainscenizowane w celu zatwierdzenia:
(Użyj „Git dodaj…”, aby zaktualizować to, co zostanie popełnione)
(Użyj „Git Checkout -…”, aby odrzucić zmiany w katalogu roboczym)
Zmodyfikowany: b.tekst
Nie dodano żadnych zmian w celu zatwierdzenia (użyj „git add” i/lub „git commit -a”)

Załóżmy, że na tym etapie otrzymasz prośbę o aktualizację.plik txt w gałęzi głównej. Ale nie skończyłeś z B.plik txt. Jeśli spróbujesz sprawdzić gałąź główną, otrzymasz następujący błąd:

$ git kectout Master
Błąd: Twoje lokalne zmiany w następujących plikach zostaną zastąpione przez kasę:
B.tekst
Proszę, popełnij swoje zmiany lub zatrzymaj je przed zmianą gałęzi.
Przerwanie

Ale nie chcesz popełniać niedokończonej pracy w B.tekst. W tej sytuacji możesz użyć Git Stash:

$ git Stash
Zapisany katalog roboczy i WIP stanu indeksu na funkcji 1: 2CFE39B Dodano B.tekst
Głowa jest teraz na 2cfe39b dodana b.tekst

Jeśli sprawdzisz B.txt, powinien być pusty:

$ cat b.tekst
$

Jeśli sprawdzisz skrytkę, zobaczysz:

$ git Stash List
stash@0: WIP na funkcji 1: 2CFE39B Dodano B.tekst

Jeśli spróbujesz sprawdzić gałąź główną, powinieneś być w stanie to zrobić teraz:

$ git kectout Master
Przełączony na „mistrz” oddziału

Załóżmy, że wprowadzasz zmiany niezbędne na mistrzu, a następnie wrócisz do gałęzi funkcji 1:

Funkcja $ git kector1

Twoja b.TXT jest nadal pusty:

$ cat b.tekst
$

Ale jeśli otrzymasz zmiany ze skrytki za pomocą następującego polecenia:

$ git Stash Zastosuj
Na funkcji oddziału 1
Zmiany nie zostały zainscenizowane w celu zatwierdzenia:
(Użyj „Git dodaj…”, aby zaktualizować to, co zostanie popełnione)
(Użyj „Git Checkout -…”, aby odrzucić zmiany w katalogu roboczym)
Zmodyfikowany: b.tekst
Nie dodano żadnych zmian w celu zatwierdzenia (użyj „git add” i/lub „git commit -a”)

Komenda stosowania zapasu wzięła schowane zmiany i zastosowało je do B.plik txt
Możesz ukończyć swoją pracę w B.txt, modyfikując linię

Mam zamiar to zmienić na…


Do

Mam zamiar zmienić to na gotowe

Teraz śmiało i popełnij swoje zmiany:

$ git add -a
$ git commit -m "zmodyfikowany b.tekst"

Zastosowanie skrytki nie czyści go automatycznie ze skrytki. Musisz go wyczyścić ręcznie:

$ Git Stash Drop
Upuszczony refs/stash@0 (0a66a16b32633e8d564d08e38254c491c1b1d3be)

Dlaczego git zapasu z imieniem?

Git Stash to stos. Dzięki czemu możesz ciągle tworzyć zmiany.

Załóżmy, że dodajesz „x” do b.txt, schuj, dodaj „y” do b.txt, schuj i dodaj „Z” do B.txt i schowaj. Jeśli sprawdzisz historię Stash, zobaczysz coś takiego:

$ git Stash List
stash@0: WIP na funkcji 1: 2D6F515 Zmodyfikowany b.tekst
stash@1: WIP na funkcji 1: 2d6f515 zmodyfikowany b.tekst
stash@2: WIP na funkcji 1: 2D6F515 Zmodyfikowany b.tekst

Nie masz możliwości wiedzy, która stash ma, która zmiana. Kiedy się schowujesz, możesz użyć opcji zapisu, aby umieścić w komentarzach. Możesz użyć komentarzy, aby załączyć nazwę do swojego skrytki i uczynić je rozpoznawalnymi:

$ git stash zapisz „x”
Zapisany katalog roboczy i stan indeksu na funkcji 1: x
Głowa jest teraz zmodyfikowana 2d6f515.tekst

Aby dodać modyfikację „X”, „Y” i „Z”, możesz uzyskać następujące w skrytce za pomocą opcji zapisu dla każdej skrytki:

$ git Stash List
stash@0: na funkcji 1: z
stash@1: na funkcji 1: y
stash@2: na funkcji 1: x

Teraz masz nazwę każdej zmiany, którą schowałeś. Niestety nie możesz użyć nazwy do odzyskania skrytki. Będziesz musiał użyć numeru Stash. Załóżmy, że chcesz uzyskać zmianę „y”. Widzisz, że stash@1 jest y. Możesz więc zastosować tę zmianę w bieżącej gałęzi:

$ git stash zastosuj stash@1

I twój b.txt powinien mieć zmiany ze stash@1.

Możesz użyć tej samej metody, aby upuścić skrytkę. Załóżmy, że zdajesz sobie sprawę, że nie potrzebujesz już x stash. Możesz po prostu użyć następującego polecenia, aby usunąć ten schowek:

$ git stash drop stash@2

I skrytka powinna zniknąć:

$ git Stash List
stash@0: na funkcji 1: z
stash@1: na funkcji 1: y

Pamiętaj, że jeśli użyjesz opcji Zastosuj i upuszczasz bez żadnych parametrów, użyje górnej części stosu (stash@0).

Wniosek

Komenda Git Stash to potężny sposób zarządzania swoim obszarem roboczym. Opanowanie tego polecenia pomoże Ci pracować wydajniej.

Dalsze badanie:
  • https: // git-scm.com/book/en/v1/git-tools-hak
Bibliografia:

STACK Orblow: Porak-to-Name-and-Retrieve-a-Stash-by-Bet-in-w-git