Risposte:
git reset --hard HEAD~1
git push -f <remote> <branch>
(Esempio spinta: git push -f origin bugfix/bug123
)
Ciò annullerà l'ultimo commit e invierà la cronologia aggiornata al telecomando. Devi passare il -f
perché stai sostituendo la cronologia a monte nel telecomando.
git log --decorate --oneline
per scoprire dove punta HEAD.
git reset HEAD~1
se non si desidera che le modifiche vengano eliminate (modifiche non messe in scena). Cambia, git push -f [origin] [branch]
Generalmente, effettua un commit "inverso", usando:
git revert 364705c
quindi inviarlo al telecomando come al solito:
git push
Questo non eliminerà il commit: effettua un commit aggiuntivo che annulla qualunque cosa abbia fatto il primo commit. Nient'altro, non molto sicuro, soprattutto quando i cambiamenti sono già stati propagati.
git reset
è accettato solo se non hai ancora inviato le modifiche al server.
Prima di tutto, rilassati.
"Nulla è sotto il nostro controllo. Il nostro controllo è pura illusione.", "Errare è umano"
Ho capito che hai spinto involontariamente il tuo codice in remote-master
. Questo andrà bene.
1. Inizialmente, ottenere il SHA-1
valore del commit che si sta tentando di restituire, ad es. Commit sul ramo principale. esegui questo:
git log
vedrai un mucchio di 'f650a9e398ad9ca606b25513bd4af9fe ...' come stringhe insieme a ciascuna delle commit. copia quel numero dal commit che vuoi restituire .
2. Ora, digita sotto il comando:
git reset --hard your_that_copied_string_but_without_quote_mark
dovresti vedere un messaggio come "HEAD is now at". sei in chiaro. Quello che ha appena fatto è riflettere quel cambiamento a livello locale.
3. Ora, digita sotto il comando:
git push -f
dovresti vedere come
"avviso: push.default non è impostato; il suo valore implicito è cambiato in ..... ... Totale 0 (delta 0), riutilizzato 0 (delta 0) ... ... your_branch_name -> master (aggiornamento forzato) ".
Ora, siete tutti chiari. Controlla di nuovo il master con "git log", il tuo fixed_destination_commit dovrebbe essere in cima alla lista.
Prego (in anticipo;))
AGGIORNARE:
Ora, i cambiamenti che avevi fatto prima che iniziassero tutti, ora sono spariti. Se vuoi riportare di nuovo quei duri lavori, è possibile. Grazie a git reflog e ai comandi git cherry-pick .
Per questo, suggerirei di seguire questo blog o questo post .
Puoi fare un rebase interattivo:
git rebase -i <commit>
Questo farà apparire l'editor predefinito. Basta eliminare la riga contenente il commit che si desidera rimuovere per eliminare quel commit.
Ovviamente, avrai bisogno di accedere al repository remoto per applicare anche questa modifica.
Vedi questa domanda: Git: rimozione dei commit selezionati dal repository
Prova a usare
git reset --hard <commit id>
Nota: qui l'id di commit indica l'id del commit a cui si desidera andare ma non l'id che si desidera ripristinare. questo è stato l'unico punto in cui sono rimasto bloccato.
quindi spingere
git push -f <remote> <branch>
git reset --hard <the-sha-you-want-to-return-to>
.