/ / Come posso annullare completamente git commit appena fatto - git, controllo versione

Come posso annullare completamente git commit appena fatto - git, version-control

Mi sono impegnato nel mio ramo.

Ho aggiunto per caso .tar.gz file in esso che voglio ignorare.

Poi l'ho fatto

git reset --soft HEAD^

Ora il mio commit è andato

  1. I file modificati sono come sono
  2. Ma i file non tracciati vengono ora mostrati come nuovo file

Come posso tornare indietro per indicare dove arrivano i nuovi file come file non tracciati

risposte:

1 per risposta № 1

UN git reset --soft si muove solo HEAD, ma non ripristinare l'indice.

UN git reset @^ si muove HEAD e reimpostare l'indice, rendendo nuovamente non tracciati quei file.

Più su quelli reset opzioni a "Puoi spiegare cosa fa “git reset” in inglese?".

Vedi anche una buona illustrazione in "Differenza tra git reset morbido, misto e difficile": quello che vuoi è ripristinare HEAD e indicizzare, non l'albero di lavoro.

http://davidzych.com/wp-content/uploads/2014/05/reset-wc-changed-580x136.png


Il Utente OP3646965 chiede i commenti:

L'ho già giustiziato git reset --soft, posso fare git reset @^ o tornerà indietro di un altro commit?

Quindi è possibile eseguire un ripristino solo per i file (non HEAD, che fa già riferimento al commit corretto)

cd /path/to/folder/containing/tar.gz_files
git reset -- *.tar.gz

Notare la doppio trattino (--) tra il comando git e i file.


0 per risposta № 2

Non puoi effettivamente eliminare i file tramite un reset git, il che significa che se hai aggiunto nuovi file nel tuo commit recente, anche se lo fai, git reset --hard HEAD~1, i file che sono stati aggiunti nell'ultimo commit non verranno eliminati. Questa è una precauzione essenziale e necessaria in git. Cosa succede se, nella speranza di ripristinare la directory in HEAD~1 git elimina accidentalmente i file non tracciati che erano non destinato ad essere eliminato?

Tu puoi fare git reset --hard HEAD~1 per ripristinare lo stato dei file esistenti. Ma se hai aggiunto nuovi file nel tuo ultimo commit, devi eliminarlo tu stesso.


0 per risposta № 3

git reset filename ripristinerà lo stato di filename a qualunque cosa sia attualmente in fase di commit, ovvero rimuoverà in scena un file.