Git Stash con il nome

Git Stash con il nome

Come gettare le modifiche con il nome associato e trovarlo in seguito

Gli sviluppatori devono spesso multitasking. Potresti lavorare su una nuova funzionalità e potrebbe esserci una richiesta per correggere un bug. Oppure potresti essere lo sviluppatore principale di più progetti.

Quando stai passando da un tempo, a volte non vuoi commettere un lavoro incompiuto. In questi casi, il comando Git Stash può essere di grande aiuto. Ti permette di impilare le modifiche e successivamente tornare al lavoro incompiuto senza aggiungere commit non necessari ai tuoi repository GIT.

Un flusso di lavoro per Git Stash

Inizializzano una filiale GIT Master e commettiamo un file readme.TXT.

$ mkdir my_project
$ cd my_project/
$ git init
$ touch readme.TXT
$ git aggiungi -a
$ git commit -m "inizializza"

Ora aggiungiamo un altro file chiamato a.txt al ramo principale.

$ touch a.TXT
$ git aggiungi -a
$ git commit -m "aggiunto a.TXT"

Se controlli la storia, vedrai:

$ git log --oneline
d79f7aa ha aggiunto a.TXT
9434d7E Inizializza

Ora creiamo un ramo di Feature1 e aggiungiamo una B.file txt:

$ git filiale caratteristica1
$ git checkout funzioni1
$ touch b.TXT
$ git aggiungi -a
$ git commit -m "aggiunto b.TXT"

Apri il tuo b.file txt in un editor e inserire la riga:

Sto per cambiare questo in ..

E salva il file. Se controlli il tuo stato GIT, vedi quanto segue:

$ git status
Su Branch Feature1
Cambiamenti non messi in scena per commit:
(Usa "git aggiungi ..." per aggiornare ciò che verrà impegnato)
(Usa "Git Checkout - ..." per scartare le modifiche nella directory di lavoro)
modificato: b.TXT
Nessuna modifica aggiunta al commit (usa "git add" e/o "git commit -a")

Supponiamo, in questa fase, ricevi una richiesta per aggiornare A.file txt sul ramo principale. Ma non hai finito con la B.file txt. Se provi a controllare la filiale principale, ottieni il seguente errore:

$ git checkout master
Errore: le modifiche locali ai seguenti file verrebbero sovrascritte con il checkout:
B.TXT
Si prega di commettere le modifiche o riponirle prima di poter cambiare le filiali.
Abortire

Ma non vuoi commettere il lavoro incompiuto in B.TXT. Puoi usare lo stash Git in questa situazione:

$ git stash
Directory di lavoro salvata e WIP di stato indice su Feature1: 2CFe39B Aggiunto B.TXT
La testa è ora a 2CFe39B aggiunta b.TXT

Se controlli b.txt, dovrebbe essere vuoto:

$ gatto b.TXT
$

Se controlli la scorta, vedrai:

$ Git Stash List
Stash@0: WIP su Fect1: 2cfe39b aggiunto b.TXT

Se provi a controllare la filiale principale, dovresti essere in grado di farlo ora:

$ git checkout master
Passato a Branch 'Master'

Supponiamo di apportare le modifiche alle necessarie sul master e quindi di tornare al ramo Fect1:

$ git checkout funzioni1

Il tuo B.txt è ancora vuoto:

$ gatto b.TXT
$

Ma se si ottengono le modifiche dalla scorta usando il seguente comando:

$ git stash applica
Su Branch Feature1
Cambiamenti non messi in scena per commit:
(Usa "git aggiungi ..." per aggiornare ciò che verrà impegnato)
(Usa "Git Checkout - ..." per scartare le modifiche nella directory di lavoro)
modificato: b.TXT
Nessuna modifica aggiunta al commit (usa "git add" e/o "git commit -a")

Il comando applicazione stash ha preso le modifiche ripiegate e lo ha applicato a b.file txt
Puoi completare il tuo lavoro in B.txt la mia modifica della riga

Sto per cambiare questo in ..


A

Sto per cambiare questo per fare

Ora vai avanti e impegna le tue modifiche:

$ git aggiungi -a
$ git commit -m "modificato b.TXT"

L'applicazione di una scorta non la pulirà automaticamente dalla scorta. Devi ripulirlo manualmente:

$ git stash drop
Riforniti/stash rilasciati@0 (0a66a16b32633e8d564d08e38254c491c1b1d3be)

Perché git stash con il nome?

La stash Git è uno stack. Quindi puoi continuare a accumulare le tue modifiche.

Supponiamo di aggiungere "X" a B.txt, riponirlo, aggiungere un "y" a b.txt, riponi e aggiungi una "z" a b.txt e rifornilo. Se controlli la storia della scorta, vedrai qualcosa del genere:

$ Git Stash List
Stash@0: WIP on Fectice1: 2d6f515 modificato B.TXT
Stash@1: WIP on Fectice1: 2d6f515 modificato B.TXT
Stash@2: WIP on Fectice1: 2d6f515 modificato b.TXT

Non hai modo di sapere quale scorta ha quale cambiamento. Quando stai riponendo, puoi utilizzare l'opzione Salva per inserire commenti. Puoi usare i commenti per allegare un nome alla tua scorta e renderli riconoscibili:

$ git stash salva "x"
Directory di lavoro salvata e stato indice su Feature1: x
La testa è ora a 2d6f515 modificata b.TXT

Per aggiungere modifiche "X", "Y" e "Z", è possibile ottenere quanto segue nella tua scorta utilizzando l'opzione Salva per ogni scorta:

$ Git Stash List
Stash@0: su Feature1: Z
Stash@1: su Feature1: y
Stash@2: su Feature1: x

Ora hai un nome per ogni modifica che hai nascosto. Sfortunatamente, non puoi usare il nome per recuperare la scorta. Dovrai usare il numero di scorta. Supponiamo di voler ottenere il tuo cambiamento "y". Vedi che stash@1 è y. Quindi puoi applicare quella modifica al tuo ramo attuale:

$ git stash applica stash@1

E il tuo b.txt dovrebbe avere le modifiche da stash@1.

Puoi usare lo stesso metodo per far cadere una scorta. Supponiamo, ti rendi conto di non aver più bisogno della X Stash. Puoi semplicemente usare il seguente comando per eliminare quella scorta:

$ git stash drop stash@2

E la scorta dovrebbe essere sparita:

$ Git Stash List
Stash@0: su Feature1: Z
Stash@1: su Feature1: y

Ricorda che se si utilizza le opzioni Applica e rilascia senza parametri, utilizzerà la parte superiore dello stack (Stash@0).

Conclusione

Il comando Git Stash è un modo potente per gestire l'area di lavoro. Padroneggiare questo comando ti aiuterà a lavorare in modo più efficiente.

Ulteriori studi:
  • https: // git-scm.com/book/en/v1/git-tools stashing
Riferimenti:

Stack Overflow: How-to-name-and-retrieve-a-casta per nome-in-git