Qual è il modo più semplice per annullare un particolare commit che è:
- non nella testa o nella TESTA
- È stato inviato al telecomando.
Perché se non è l'ultimo commit,
git reset HEAD
non funziona E poiché è stato inviato a un telecomando,
git rebase -i
e
git rebase --onto
causerà qualche problema nei telecomandi.
Inoltre, non voglio davvero modificare la cronologia. Se c'era un codice errato, era presente nella storia e può essere visto. Lo voglio solo nella copia di lavoro e non mi dispiace un commit di unione inversa.
In altre parole, qual è l' equivalente Git 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 unendo in modo inverso tutte le modifiche in tali revisioni, come un nuovo commit.
svn merge -c -302 ^/trunk
che annulla il commit 302, ovviamente aggiungendo un altro commit che inverte le modifiche da quel rispettivo commit.
Ho pensato che dovrebbe essere un'operazione abbastanza semplice in Git e un caso d'uso abbastanza comune. Cos'altro ha a che fare il commit atomico?
Abbiamo una messa in scena temporanea e tutti per garantire che i commit siano perfettamente atomici, non dovresti essere in grado di annullare facilmente uno o più di questi commit atomici?