Metodo REVERSIBILE per eliminare tutte le modifiche:
Ho trovato questa domanda dopo aver creato un'unione e aver dimenticato di controllare lo sviluppo subito dopo. Hai indovinato: ho iniziato a modificare alcuni file direttamente sul master . D'oh! Dato che la mia situazione non è affatto unica (l'abbiamo fatto tutti, no; ->), offrirò un modo reversibile che ho usato per scartare tutte le modifiche per far sì che il master assomigli di nuovo allo sviluppo .
Dopo aver fatto un git diff
per vedere quali file sono stati modificati e valutare la portata del mio errore, ho eseguito:
git stash
git stash clear
Dopo aver prima nascosto tutte le modifiche, sono state successivamente cancellate. Tutte le modifiche apportate ai file in errore al master sono state eliminate e la parità è stata ripristinata.
Diciamo che ora volevo ripristinare quelle modifiche. Posso farlo. Il primo passo è trovare l'hash della scorta che ho appena cancellato / lasciato cadere:
git fsck --no-reflog | awk '/dangling commit/ {print $3}'
Dopo aver appreso l'hash, ho ripristinato con successo le modifiche non salvate con:
git stash apply hash-of-cleared-stash
Non volevo davvero ripristinare quelle modifiche, volevo solo confermare che potevo ripristinarle, quindi le ho cancellate di nuovo.
Un'altra opzione è applicare la scorta a un ramo diverso , piuttosto che cancellare le modifiche. Quindi, in termini di cancellazione delle modifiche apportate lavorando sul ramo sbagliato, stash
ti dà molta flessibilità per recuperare dal tuo boo-boo.
Comunque, se vuoi un mezzo reversibile per cancellare le modifiche a un ramo, quanto sopra è un modo meno pericoloso in questo caso d'uso.
git reset --hard HEAD^