Apa cara paling sederhana untuk membatalkan komitmen tertentu yaitu:
- tidak di kepala atau KEPALA
- Telah didorong ke remote.
Karena jika itu bukan komitmen terbaru,
git reset HEAD
tidak bekerja Dan karena telah didorong ke remote,
git rebase -i
dan
git rebase --onto
akan menyebabkan beberapa masalah di remote.
Terlebih lagi, saya benar-benar tidak ingin memodifikasi sejarah. Jika ada kode buruk, itu ada di sana dalam sejarah dan bisa dilihat. Saya hanya ingin itu dalam copy pekerjaan, dan saya tidak keberatan komit penggabungan terbalik.
Dengan kata lain, apa yang setara dengan Git dari perintah svn berikut:
svn merge -r 303:295 http://svn.example.com/repos/calc/trunk
yang menghapus semua perubahan dari 295 hingga 302 dengan membalikkan semua perubahan dalam revisi tersebut, sebagai komit baru.
svn merge -c -302 ^/trunk
yang membatalkan 302 commit, tentu saja dengan menambahkan commit lain yang membalikkan menggabungkan perubahan dari commit tersebut.
Saya pikir itu harus menjadi operasi yang cukup sederhana di Git dan kasus penggunaan yang cukup umum. Apa lagi maksud dari komitmen atom?
Kami memiliki staging stashing dan semuanya untuk memastikan bahwa komit adalah atomik sempurna, tidakkah Anda dapat membatalkan satu atau lebih dari komit atomik itu dengan mudah?