git annulla tutte le modifiche non salvate o non salvate

Sto cercando di annullare tutte le modifiche dal mio ultimo commit. Ho provato git reset --hard e git reset --hard HEAD dopo aver visto questo post . Rispondo con la testa ora è al 18c3773 … ma quando guardo la mia fonte locale tutti i file sono ancora lì. Cosa mi manca?

  • Questo non attirerà tutti i file che potresti aver messo in scena con git add :

     git reset 
  • Questo annullerà tutte le modifiche locali non salvate (dovrebbe essere eseguito nella root del repository):

     git checkout . 

    Puoi anche ripristinare le modifiche non salvate solo in determinati file o directory:

     git checkout [some_dir|file.txt] 

    Un altro modo per ripristinare tutte le modifiche non salvate (più lungo da digitare, ma funziona da qualsiasi sottodirectory):

     git reset --hard HEAD 
  • Questo rimuoverà tutti i file locali non tracciati, quindi rimangono solo i file tracciati di git:

     git clean -fdx 

    ATTENZIONE: -x rimuoverà anche tutti i file ignorati, inclusi quelli specificati da .gitignore ! Si consiglia di utilizzare -n per l’anteprima dei file da eliminare.


Per riassumere: l’esecuzione dei comandi di seguito è fondamentalmente equivalente a un nuovo git clone dalla fonte originale (ma non scarica di nuovo nulla, quindi è molto più veloce):

 git reset git checkout . git clean -fdx 

L’utilizzo tipico di questo sarebbe negli script di build, quando è necessario assicurarsi che la propria struttura sia assolutamente pulita – non abbia alcuna modifica o file di oggetti creati localmente o artefatti di build, e si vuole farlo funzionare molto velocemente e non clonare l’intero repository ogni volta.

Se desideri ” annullare ” tutte le modifiche senza commit, esegui semplicemente:

 git stash git stash drop 

Se hai file non tracciati (controlla eseguendo lo git status ), questi possono essere rimossi eseguendo:

 git clean -fdx 

git stash crea una nuova memoria che diventerà lo stash @ {0} . Se si desidera verificare per primo, è ansible eseguire l’ git stash list di git stash list per visualizzare un elenco dei propri archivi. Assomiglierà a qualcosa:

 [email protected]{0}: WIP on rails-4: 66c8407 remove forem residuals [email protected]{1}: WIP on master: 2b8f269 Map qualifications [email protected]{2}: WIP on master: 27a7e54 Use non-dynamic finders [email protected]{3}: WIP on blogit: c9bd270 some changes 

Ogni stash prende il nome dal precedente messsage di commit.

c’è anche git stash – che “ripara” le tue modifiche locali e può essere riapplicato in un secondo momento o abbandonato se non è più necessario

maggiori informazioni sulla conservazione

Sto usando l’albero dei sorgenti …. Puoi annullare tutte le modifiche senza commit con 2 semplici passaggi:

1) è sufficiente ripristinare lo stato del file dell’area di lavoro

inserisci la descrizione dell'immagine qui 2) selezionare tutti i file nonstage (comando + a), fare clic con il tasto destro e selezionare remove

inserisci la descrizione dell'immagine qui

È così semplice: D

Per coloro che sono arrivati ​​qui cercando se potevano annullare git clean -f -d , con il quale è stato cancellato un file creato in eclipse ,

Puoi fare lo stesso dall’interfaccia utente usando “ripristina dalla cronologia locale” per ref: Ripristina dalla cronologia locale

Stati che passano da un commit a un nuovo commit

 0. last commit,ie HEAD commit 1. Working tree changes, file/directory deletion,adding,modification. 2. The changes are staged in index 3. Staged changes are committed 

Azione per la transizione dello stato

 0->1: manual file/directory operation 1->2: git add . 2->3: git commit -m "xxx" 

Controlla diff

 0->1: git diff 0->2: git diff --cached 0->1, and 0->2: git diff HEAD last last commit->last commit: git diff HEAD^ HEAD 

Ripristina per ultimo commit

 2->1: git reset 1->0: git checkout . #only for tracked files/directories(actions include modifying/deleting tracked files/directories) 1->0: git clean -fdx #only for untracked files/directories(action includes adding new files/directories) 2->1, and 1->0: git reset --hard HEAD 

Equivalente di clone git, senza scaricare di nuovo nulla

 git reset; git checkout .; git clean -fdx