Qual è il modo più semplice per annullare un particolare commit che è:annullare una particolare commit in Git che è stato spinto a pronti contro termine a distanza
-
non
- nella testa o la testa
- è stato spinto al telecomando.
Perché se non è l'ultimo commit,
git reset HEAD
non funziona. E poiché è stato spinto ad un telecomando,
git rebase -i
e
git rebase --onto
causerà qualche problema nei telecomandi.
Più così, non voglio modificare davvero la cronologia. Se c'era codice cattivo, era lì nella storia e può essere visto. Lo voglio solo nella copia di lavoro, e non mi interessa un commit di inversione inversa.
In altre parole, qual è il Git equivalente dei seguenti comandi svn:
svn merge -r 303:295 http://svn.example.com/repos/calc/trunk
che rimuove tutte le modifiche da 295 a 302 di fusione inversa tutte le variazioni di tali modifiche, come nuovo commit.
svn merge -c -302 ^/trunk
che annulla l'commit 302, naturalmente aggiungendo un altro commit che inversa unisce le modifiche da quel rispettivo impegnano.
Ho pensato che dovrebbe essere un'operazione abbastanza semplice in Git e un caso d'uso abbastanza comune. Cos'altro è il punto dei comandi atomici?
Abbiamo messo in scena stashing e tutto per garantire che i commit siano perfettamente atomici, non dovresti essere in grado di annullare facilmente uno o più di questi comandi atomici?
E utilizzare l'opzione -n se si desidera il codice indietro, ma non viene eseguito automaticamente il commit di nuovo – jaygooby
Cosa fa l'opzione "m"? Ho provato git revert 8213f7d ma ho ottenuto questo: error: Commit 8213f7dad1ed546b434a0d8a64cb783b530a5a30 è una fusione ma non è stata data l'opzione -m. fatale: ripristino fallito – Malcolm
'git help revert' dice che ti permette di scegliere quale genitore dell'unione vuoi tornare indietro. Non è possibile ripristinare un'unione senza selezionare un genitore. La documentazione rimanda a https://www.kernel.org/pub/software/scm/git/docs/howto/revert-a-ultyulty-merge.txt –