Qual è la differenza tra il ripristino Git -mixed, -Soft e -Hard?

Qual è la differenza tra il ripristino Git -mixed, -Soft e -Hard?
Su GIT, ogni commit è collegato al commit precedente e la testa indica il commit più recente nella filiale di lavoro. La storia del commit è immagazzinata come un albero di commit. Tuttavia, a volte gli sviluppatori devono modificare la cronologia del commit. A tale scopo, il "$ git reset"Il comando viene utilizzato per modificare la cronologia del repository git e correggere gli errori che sono stati commessi.

Questo articolo spiegherà brevemente la differenza tra il reset git -hard, -Soft e -mixed.

Qual è la differenza tra il ripristino Git -mixed, -Soft e -Hard?

GIT fornisce più opzioni di ripristino. Sulla base di come gestiscono gli commit, tutte le opzioni disponibili sono diverse l'una dall'altra. Tutti modificano la cronologia GIT e spostano la testa. Inoltre, gestiscono i cambiamenti in modo diverso, come ad esempio:

  • IL "-morbido"Opzione usata con il"$ git reset"Comando per mantenere i file e restituire le modifiche di commit nell'indice di stadiazione GIT.
  • "$ git reset -mixed"Viene utilizzato per annullare le modifiche di commit e rimuovere il file dall'indice di stadiazione senza eliminarlo dalla directory di lavoro.
  • IL "-difficileOpzione "con la"$ git reset"Il comando viene utilizzato per eliminare tutte le modifiche e rimuoverle dalla directory di lavoro locale.

Facciamo un esempio per vedere come "$ git reset"Il comando funziona con diverse opzioni!

Passaggio 1: vai al repository Git desiderato

Innanzitutto, spostati nel tuo repository Git desiderato utilizzando il “CD"Comando:

$ cd "c: \ git \ test_repo"

Passaggio 2: creare file

Ora, esegui il comando di seguito per creare un file:

$ touch file4.TXT

Passaggio 3: aggiungi file all'indice di stadiazione

Usa il "git aggiungi"Comando di aggiungere il file di recente generazione nell'indice di stadiazione:

$ git aggiungi file4.TXT

Passaggio 4: commettere modifiche

Successivamente, aggiungi tutte le modifiche al repository di lavoro eseguendo il "commit git"Comando:

$ git commit -m "file4 aggiunto"

Passaggio 5: controlla il registro Git

Quindi, controlla la cronologia del registro GIT per visualizzare gli ultimi commit che sono stati aggiunti:

$ git log

Nell'output di seguito, si può vedere che vengono visualizzati tutti gli ultimi commit aggiunti e il "TESTA"Sta indicando il recente commit:

Nota: Per controllare la posizione di puntamento attuale della testa in modo migliore, eseguire il "registro git"Comando insieme al"-una linea" bandiera:

$ git log --oneline

Di seguito, l'output mostra l'elenco di commit sha hash con messaggi di commit:

Passaggio 6: utilizzare il comando Git reset -Soft

Per ripristinare le modifiche aggiunte dal repository Git all'indice di stadiazione, utilizza il “reset git"Comando insieme al"-morbido"Opzione e specificare la posizione della testa desiderata in cui è necessario spostare il puntatore:

$ git reset -Soft Head ~ 1

Passaggio 7: controlla lo stato GIT

Ora, verifica la posizione di ripristino della testa controlla lo stato del repository git:

$ git status

Si può vedere che il "Git reset -Soft"Il comando ha restituito le modifiche di commit all'indice di stadiazione Git. Inoltre, il "File4.TXT"Il file è ora nell'indice di stadiazione GIT e deve essere impegnato:

Passaggio 8: controlla il registro Git

Per visualizzare la posizione corrente della testa, eseguire il comando dato insieme al "-una linea" opzione:

$ git log --oneline

Qui, la testa indica il "File3" commettere:

Passaggio 9: utilizzare il reset git - comando misto

Per annullare le modifiche impegnate e rimuovere i file dall'area di stadiazione senza eliminare da essi dalla directory di lavoro, eseguire il “$ git reset -mixed"Comando insieme alla posizione di testa richiesta del commit:

$ git reset -miscelato ~ 1

Passaggio 10: controlla lo stato di git

Visualizza le modifiche appena aggiunte controllando lo stato del repository Git:

$ git status

Si può osservare che le modifiche di commit specificate vengono rimosse dall'area di stadiazione. Tuttavia, sono collocati nell'area di lavoro:

Passaggio 11: controlla il registro Git

Controlla la cronologia del registro di riferimento del repository Git insieme all'hash SHA:

$ git log --oneline

Passaggio 12: Usa Git reset - comando duro

Per rimuovere le modifiche aggiunte dalla directory di lavoro locale Git, eseguire il "$ git reset -hard"Comando:

$ git reset -testa hard ~ 1

Passaggio 13: Verifica il puntatore della testata

Per verificare il puntatore del protagonista, tornare alla posizione specificata, eseguire "registro git"Comando:

$ git log --oneline

Sotto l'output mostra che la testa punta a "File1 aggiunto" commettere:

Passaggio 14: controlla lo stato GIT

Per visualizzare le modifiche aggiunte, controllare lo stato GIT:

$ git status

Si può vedere che non abbiamo alcun brano e cambiamenti in attesa di "File2.TXT" file. Pertanto, file2.txt è stato rimosso completamente:

Passaggio 15: verificare l'elenco del contenuto del repository

Per verificare l'elenco del repository di contenuto, eseguire "ls"Comando:

$ ls

Come puoi vedere, il "File2.TXT"Il file non esiste nella directory corrente:

Abbiamo spiegato la differenza tra le opzioni Git reset -mixed, -Soft e -Hard.

Conclusione

IL "reset git"Il comando viene utilizzato per ripristinare le modifiche, modificare la cronologia del repository Git e correggere gli errori. IL "Git reset -Soft"Il comando mantiene i file e restituisce le modifiche di commit nell'area di stadiazione GIT. Al contrario, il "reset git -mixed"Comando annullare il commit cambia e rimuovere il file dall'indice di stadiazione senza eliminarlo dalla directory di lavoro. Per eliminare tutte le modifiche e rimuoverle dall'area di lavoro Git, "reset git -hard"Il comando può essere utilizzato. Questo articolo ha illustrato la differenza tra il reset git -mixed, -Soft e -Hard.