Idiota

Git Stash con nome

Git Stash con nome

Come nascondere le modifiche con il nome associato e trovarle in seguito

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

Quando passi da un'attività all'altra, a volte non vuoi impegnarti in un lavoro incompiuto. In questi casi, il comando git stash può essere di grande aiuto. Ti consente di impilare le tue modifiche e in seguito tornare al lavoro incompiuto senza aggiungere commit inutili ai tuoi repository git.

Un flusso di lavoro per Git Stash

Inizializza un ramo git master e invia un file ReadMe.TXT.

$ mkdir mio_progetto
$ cd mio_progetto/
$ git init
$ tocca Leggimi.TXT
$ git add -A
$ git commit -m "Inizializza"

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

$ tocca a.TXT
$ git add -A
$ git commit -m "Aggiunto a.TXT"

Se controlli la cronologia, vedrai:

$ git log --oneline
d79f7aa Aggiunto a.TXT
9434d7e Inizializza

Ora creiamo un ramo feature1 e aggiungiamo un b.file txt:

$ git branch feature1
$ git checkout feature1
$ tocco b.TXT
$ git add -A
$ git commit -m "Aggiunto b.TXT"

Apri il tuo b.txt in un editor e inserisci nella riga:

Sto per cambiare questo in..

E salva il file. Se controlli il tuo stato git, vedrai quanto segue:

$ git stato
Sul ramo feature1
Modifiche non programmate per il commit:
(usa "git add … "per aggiornare ciò che verrà impegnato)
(usa "git checkout -- … "per annullare 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, di ricevere una richiesta di aggiornamento di a.txt sul ramo principale. Ma non hai finito con il b.file txt. Se provi a controllare il ramo principale, ricevi il seguente errore:

$ git checkout master
errore: le modifiche locali ai seguenti file verrebbero sovrascritte dal checkout:
b.TXT
Per favore, conferma le tue modifiche o nascondile prima di poter cambiare ramo.
Interruzione

Ma non vuoi impegnare il lavoro incompiuto in b.TXT. Puoi usare git stash in questa situazione:

$ git stash
Cartella di lavoro salvata e stato dell'indice WIP su feature1: 2cfe39b Aggiunto b.TXT
HEAD è ora a 2cfe39b Aggiunto b.TXT

Se controlli b.txt, dovrebbe essere vuoto:

$ gatto b.TXT
$

Se controlli la scorta, vedrai:

$ git stash list
stash@0: WIP su feature1: 2cfe39b Aggiunto b.TXT

Se provi a controllare il ramo principale, dovresti essere in grado di farlo ora:

$ git checkout master
Passato al ramo 'master'

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

$ git checkout feature1

Il tuo B.txt è ancora vuoto:

$ gatto b.TXT
$

Ma se ottieni le modifiche dallo stash usando il seguente comando:

$ git stash si applica
 
Sul ramo feature1
Modifiche non programmate per il commit:
(usa "git add … "per aggiornare ciò che verrà impegnato)
(usa "git checkout -- … "per annullare le modifiche nella directory di lavoro)
 
modificato:   b.TXT
 
nessuna modifica aggiunta al commit (usa "git add" e/o "git commit -a")

Il comando stash apply ha preso le modifiche nascoste e le ha applicate a b.file txt
Puoi completare il tuo lavoro in b.txt la mia modifica della linea

Sto per cambiare questo in..


Per

Sto per cambiarlo in FATTO

Ora vai avanti e conferma le tue modifiche:

$ git add -A
$ git commit -m "Modificato b.TXT"

L'applicazione di una scorta non la pulisce automaticamente dalla scorta. Devi pulirlo manualmente:

$ git stash drop
Rifiuti/stash eliminati@0 (0a66a16b32633e8d564d08e38254c491c1b1d3be)

Perché Git Stash con Nome??

La scorta di git è una pila. Così puoi continuare ad accumulare le tue modifiche.

Supponiamo di aggiungere "X" a b.txt, nascondilo, aggiungi una "Y" a b.txt, nascondilo e aggiungi una "Z" a b.txt e nascondilo. Se controlli la cronologia della scorta, vedrai qualcosa del genere:

$ git stash list
[email protected]0: WIP su feature1: 2d6f515 modificato b.TXT
[email protected]1: WIP su feature1: 2d6f515 modificato b.TXT
[email protected]2: WIP su feature1: 2d6f515 Modificato b.TXT

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

$ git stash salva "X"
Directory di lavoro salvata e stato dell'indice On feature1: X
HEAD ora è a 2d6f515 Modificato b.TXT

Per aggiungere modifiche "X", "Y" e "Z", puoi ottenere quanto segue nella tua scorta usando l'opzione di salvataggio per ogni scorta:

$ git stash list
stash@0: On feature1: Z
stash@1: On feature1: Sì
stash@2: On feature1: X

Ora hai un nome per ogni cambiamento che hai nascosto. Sfortunatamente, non puoi usare il nome per recuperare la scorta. Dovrai usare il numero della scorta. Supponiamo di voler ottenere il cambio di "Y". Vedi che [email protected]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 [email protected]1.

Puoi usare lo stesso metodo per lasciare una scorta. Supponiamo, ti rendi conto che non hai più bisogno della scorta di X. 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: On feature1: Z
stash@1: On feature1: Sì

Ricorda che se utilizzi le opzioni di applicazione e rilascio senza alcun parametro, verrà utilizzata la parte superiore dello stack ([email protected]0).

Conclusione

Il comando git stash è un modo potente per gestire il tuo spazio 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: come-nome-e-recuperare-a-stash-by-name-in-git

Recensione del mouse wireless Microsoft Sculpt Touch
Ho letto di recente del Microsoft Scolpisci il tocco mouse wireless e ho deciso di acquistarlo. Dopo averlo usato per un po', ho deciso di condividere...
Trackpad e puntatore del mouse su schermo AppyMouse per tablet Windows
Gli utenti di tablet spesso mancano il puntatore del mouse, soprattutto quando sono abituati a usare i laptop laptop. Gli smartphone e i tablet touchs...
Il pulsante centrale del mouse non funziona in Windows 10
Il tasto centrale del mouse ti aiuta a scorrere lunghe pagine web e schermate con molti dati. Se si ferma, finirai per usare la tastiera per lo scorri...