Jaki jest najprostszy sposób cofnięcia konkretnego zatwierdzenia, który jest:
- nie w głowie ani w głowie
- Został przekazany do pilota.
Ponieważ jeśli nie jest to ostatni zatwierdzenie,
git reset HEAD
nie działa A ponieważ został przekazany do pilota,
git rebase -i
i
git rebase --onto
spowoduje jakiś problem w pilotach.
Co więcej, nie chcę tak naprawdę modyfikować historii. Jeśli był zły kod, był w historii i można go zobaczyć. Po prostu chcę, żeby to było w kopii roboczej i nie mam nic przeciwko zatwierdzeniu przez scalanie w odwrotnej kolejności.
Innymi słowy, jaki jest odpowiednik Git następujących poleceń svn:
svn merge -r 303:295 http://svn.example.com/repos/calc/trunk
który usuwa wszystkie zmiany z 295 do 302 poprzez odwrotne scalenie wszystkich zmian w tych wersjach, jako nowe zatwierdzenie.
svn merge -c -302 ^/trunk
który anuluje zatwierdzenie 302, oczywiście przez dodanie kolejnego zatwierdzenia, które odwraca scala zmiany z tego odpowiedniego zatwierdzenia.
Pomyślałem, że powinna to być dość prosta operacja w Git i dość powszechny przypadek użycia. Jaki jeszcze sens mają atomowe zmiany?
Mamy ukrywanie sceniczne i wszystko po to, aby upewnić się, że zatwierdzenia są całkowicie atomowe, czy nie powinieneś być w stanie łatwo cofnąć jednego lub więcej z tych zatwierdzeń atomowych?