Batalkan komit khusus di git yang telah porting ke repositori jarak jauh

Apa cara termudah untuk membatalkan komit tertentu yang:

  • tidak di kepala atau kepala
  • Diklik di komputer jarak jauh.

Karena jika ini bukan perbaikan terakhir,

 git reset HEAD 

tidak bekerja Dan karena itu diklik pada remote,

 git rebase -i 

dan

 git rebase --onto 

akan menyebabkan beberapa masalah di konsol.

Apalagi saya tidak ingin benar-benar mengubah ceritanya. Jika ada kode buruk, itu ada dalam sejarah dan dapat dilihat. Saya hanya ingin itu dalam copy yang berfungsi, dan saya tidak keberatan memperbaiki penggabungan.

Dengan kata lain, apa yang dimaksud Git setara dengan 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 ini sebagai komitmen baru.

 svn merge -c -302 ^/trunk 

yang membatalkan komitmen 302, tentu saja, dengan menambahkan komitmen lain, yang membalikkan konvergen perubahan dengan komitmen yang sesuai.

Saya pikir itu harus menjadi operasi yang cukup sederhana di Git dan kasus penggunaan yang cukup umum. Apa arti dari komitmen atom?

Kami memiliki simpanan dan segalanya untuk memastikan bahwa komit sepenuhnya atom, tidak bisakah Anda membatalkan satu atau lebih dari atom ini dengan mudah diperbaiki?

527
23 февр. ditetapkan oleh Lakshman Prasad pada 23 Februari 2010-02-23 17:21 '10 pada 17:21 2010-02-23 17:21
@ 3 balasan

Tetapkan hash komit menggunakan git log , lalu gunakan git revert <commit> untuk membuat komit baru yang menghapus perubahan ini. Dalam arti tertentu, git revert adalah simbol kebalikan dari git cherry-pick - yang terakhir menerapkan patch ke cabang yang hi>

829
23 февр. Jawabannya diberikan oleh Andrew Aylett pada 23 Feb. 2010-02-23 17:31 '10 pada 17:31 2010-02-23 17:31

Saya tidak suka komit otomatis untuk git revert , jadi ini mungkin berguna untuk beberapa.

Jika Anda ingin file yang dimodifikasi tidak dikomit secara otomatis , Anda dapat menggunakan --no-commit

 % git revert --no-commit <commit hash> 

yang sama dengan -n

 % git revert -n <commit hash> 
250
17 мая '13 в 1:50 2013-05-17 01:50 jawabannya diberikan naomik 17 Mei '13 pada 1:50 2013-05-17 01:50

Karena sudah ditekan, Anda tidak boleh >git revert akan mengembalikan perubahan tertentu dari komit menggunakan komit baru agar tidak memanipulasi histori komit.

30
23 февр. balasan yang diberikan oleh moatPylon pada 23 Feb. 2010-02-23 17:28 '10 pada 17:28 2010-02-23 17:28

Pertanyaan lain tentang tag atau Ajukan Pertanyaan