Vari modi per rimuovere le modifiche Git locali

Ho appena clonato un repository git e controllato un ramo. Ci ho lavorato e ho deciso di rimuovere tutte le mie modifiche locali, poiché volevo la copia originale.

In breve, ho dovuto eseguire i seguenti due comandi per rimuovere le mie modifiche locali

git checkout . git clean -f 

La mia domanda è,

(1) È questo l’approccio corretto per eliminare le modifiche locali, oppure fammi sapere l’approccio corretto.

(2) quando usiamo git reset --hard come sono in grado di resettare anche senza questo comando

Grazie

* Soluzione: Major Edit (s): 03/26: * Sostituito molti termini vaghi con terminologia git specifica [tracciato / non tracciato / messo in scena / nonstage]

Potrebbero esserci solo tre categorie di file quando apportiamo modifiche locali:

Digitare 1. File monitorati

Digitare 2. File monitorati non archiviati

Digitare 3. File non tracciati non registrati, ovvero file non troncati

  • Messa in scena – Quelli che vengono spostati nell’area di staging / Aggiunti all’indice
  • Tracciati – file modificati
  • UnTracked: nuovi file. Sempre non triggersto. Se messo in scena, significa che sono tracciati.

Cosa fanno tutti i comandi:

  1. git checkout . – Rimuove SOLO i file tracciati non archiviati [Tipo 2]

  2. git clean -f – Rimuove SOLO i file UnTracked non modificati [Tipo 3]

  3. git reset --hard – Rimuove SOLO i file tracciati monitorati e non staged [tipo 1, tipo 2]

  4. git stash -u – Rimuove tutte le modifiche [Tipo 1, Tipo 2, Tipo 3]

Conclusione:

È chiaro che possiamo usare entrambi

 (1) combination of `git clean -f` and `git reset --hard` 

O

 (2) `git stash -u` 

per ottenere il risultato desiderato.

Nota: Stashing, poiché la parola significa “Store (qualcosa) in modo sicuro e segreto in un luogo specificato”. Questo può sempre essere recuperato usando git stash pop . Quindi la scelta tra le due opzioni di cui sopra è la chiamata dello sviluppatore.

Grazie Christoph e Frederik Schøning.

Modifica: 27/03

Ho pensato che valesse la pena mettere la nota ‘ beware ‘ per git clean -f

git clean -f

Non si può tornare indietro. Usa -n o --dry-run per vedere in anteprima il danno che farai.

Se si desidera rimuovere anche le directory, eseguire git clean -f -d

Se si desidera rimuovere solo i file ignorati, eseguire git clean -f -X

Se si desidera rimuovere i file ignorati e non ignorati, eseguire git clean -f -x

riferimento: altro su git clean : come rimuovere file locali (non tracciati) dall’albero di lavoro attuale di Git?

Modifica: 20/05/15

Ignora tutti i commit locali su questo ramo [Rimozione di commit locali]

Per scartare tutti i commit locali su questo ramo, per rendere il ramo locale identico al “monte” di questo ramo, basta eseguire git reset --hard @{u}

Riferimento: http://sethrobertson.github.io/GitFixUm/fixup.html

o fai git reset --hard origin/master [se il ramo locale è master ]

Nota: 06/12/2015 Questo non è un duplicato dell’altra domanda SO contrassegnata come duplicata. Questa domanda spiega come rimuovere le modifiche GIT locali [rimuovere un file aggiunto, rimuovere le modifiche aggiunte al file esistente ecc. E i vari approcci; Dove nell’altro thread SO viene indicato solo come rimuovere il commit locale. Se hai aggiunto un file e vuoi rimuoverlo da solo, l’altro thread SO non ne discute. Quindi questo non è un duplicato dell’altro]

Modifica: 23/06/15

Come ripristinare un commit già trasferito in un repository remoto?

 $ git revert ab12cd15 

Modifica: 09/01/2015

Elimina un commit precedente da ramo locale e ramo remoto

Caso: hai appena commesso una modifica al tuo ramo locale e immediatamente inviato al ramo remoto, improvvisamente realizzato, oh no! Non ho bisogno di questo cambiamento. Ora fai cosa?

git reset --hard HEAD~1 [per eliminare quel commit dalla filiale locale]

git push origin HEAD --force [entrambi i comandi devono essere eseguiti. Per l’eliminazione dal ramo remoto]

Qual è il ramo? È il ramo attualmente ritirato.

Modifica 09/08/2015 – Rimuovi git locale:

Sono phase2 master branch e del master con una fase di phase2 appena operativa

 $ git status # On branch master $ git merge phase2 $ git status # On branch master # Your branch is ahead of 'origin/master' by 8 commits. 

Q: Come sbarazzarsi di questa fusione? git reset --hard provato git reset --hard e git clean -d -f Entrambi non hanno funzionato.

L’unica cosa che ha funzionato è una delle seguenti:

 $ git reset --hard origin/master 

o

 $ git reset --hard HEAD~8 

o

$ git reset --hard 9a88396f51e2a068bb7 [sha commit code – questo è quello che era presente prima che si verificassero tutti i tuoi commit di merge]