Saya perlu memunculkan dan menghapus fiksasi "tengah" di cabang utama saya. Bagaimana saya melakukan ini?

Sebagai contoh, di cabang utama berikut saya perlu menghapus hanya melakukan af5c7bf16e6f04321f966b4231371b21475bc4da, yang merupakan yang kedua karena reboot sebelumnya:

 commit 60b413512e616997c8b929012cf9ca56bf5c9113 Author: Luca G. Soave <luca.soave@gmail.com> Date: Tue Apr 12 23:50:15 2011 +0200 add generic config/initializers/omniauth.example.rb commit af5c7bf16e6f04321f966b4231371b21475bc4da Author: Luca G. Soave <luca.soave@gmail.com> Date: Fri Apr 22 00:15:50 2011 +0200 show github user info if logged commit e6523efada4d75084e81971c4dc2aec621d45530 Author: Luca G. Soave <luca.soave@gmail.com> Date: Fri Apr 22 17:20:48 2011 +0200 add multiple .container at blueprint layout commit 414ceffc40ea4ac36ca68e6dd0a9ee97e73dee22 Author: Luca G. Soave <luca.soave@gmail.com> Date: Thu Apr 21 19:55:57 2011 +0200 add %h1 Fantastic Logo + .right for 'Sign in with Github' 

Saya perlu mantain

  • Fiksasi pertama adalah 60b413512e616997c8b929012cf9ca56bf5c9113,
  • Retainer ketiga e6523efada4d75084e81971c4dc2aec621d45530 dan
  • Perbaikan terakhir 414ceffc40ea4ac36ca68e6dd0a9ee97e73dee22

"membuang" hanya fiksasi kedua af5c7bf16e6f04321f966b4231371b21475bc4da

Bagaimana saya bisa melakukan ini? terima kasih sebelumnya Luke

48
22 апр. diatur oleh Luca G. Soave 22 Apr 2011-04-22 18:48 '11 pada 18:48 2011-04-22 18:48
@ 3 balasan

Rebase atau kembalikan adalah parameter. Rebase sebenarnya akan menghapus perbaikan dari cerita sehingga sepertinya perbaikan kedua tidak pernah ada. Ini akan menjadi masalah jika Anda memindahkan cabang utama ke repositori lain. Jika Anda mencoba mengklik setelah menginstal u>

Kembalikan adalah solusi yang tepat ketika cabang telah ditransfer ke repositori lain. git revert af5c7bf16 akan membuat fixative baru yang hanya akan mengubah perubahan yang dilakukan oleh af5c7bf16. Dengan demikian, ceritanya tidak ditulis u>

Berikut ini cara yang baik untuk menghapus: git rebase -i <commit>^ Ini akan mengarahkan Anda untuk melakukan komit sebelum yang ingin Anda hapus. Editor interaktif akan menunjukkan kepada Anda daftar semua komit kembali ke titik ini. Anda dapat memilih, squash, dll. Dalam hal ini, hapus baris komit yang ingin Anda hapus dan simpan file. Rebase akan menyelesaikan tugasnya.

63
22 апр. Jawabannya diberikan oleh JCotton 22 Apr 2011-04-22 19:23 '11 pada 19:23 2011-04-22 19:23

Jika rebase adalah opsi, Anda dapat menginstal u>

 $ git rebase -i 414ceffc^ 

Jika rebase bukan opsi, Anda bisa mengembalikannya:

 $ git revert af5c7bf16 
19
22 апр. Jawabannya diberikan mipadi 22 Apr. 2011-04-22 19:11 '11 pada 19:11 2011-04-22 19:11

Terlepas dari semua jawaban kredit asli yang diterima di sini, saya tidak menemukan jawaban yang memuaskan untuk pertanyaan itu. Jika Anda menemukan diri Anda dalam situasi di mana Anda perlu menghapus fiksasi atau koleksi fiksasi dari tengah cerita, inilah yang saya sarankan:

  • Buat cabang baru dari kepala yang berisi semua komit dan beralih ke sana.
  • Bawa cabang baru kembali ke titik di mana Anda ingin memulai basis baru.
  • Kemudian (di sini adalah titik kunci) cherry memilih komit berikutnya yang benar-benar ingin Anda terapkan setelah ini dari cabang sumber ke yang baru, dan lewati komit yang tidak lagi Anda butuhkan (mis. Yang Anda hapus).
  • Jika Anda mau, ubah nama cabang asli menjadi apa yang menunjukkan kode lama, dan kemudian ganti nama cabang baru dari mana dokumen asli dikeluarkan.
  • Terakhir, klik perubahan Anda pada repo jarak jauh (jika digunakan). Anda mungkin harus menggunakan "push push". Jika kolaborator Anda mengalami masalah dengan revisi, mungkin paling mudah untuk hanya mengkloning repo dari sumber jarak jauh. Bagaimanapun, Anda kemungkinan besar ingin berbicara dengan mereka jika Anda masih muntah di tengah-tengah cerita Anda!

Informasi Pemetikan Ceri: Apa yang dilakukan ceri dengan git?

Berikut adalah beberapa dari mereka yang melakukannya dengan Tortoise git (seperti yang baru saja saya lakukan). Sudah pasti lebih mudah menggunakan utilitas gui untuk jenis operasi ini! Pemetik ceri menggunakan TortoiseGit

5
04 авг. Jawabannya diberikan oleh BuvinJ 04 Agustus. 2017-08-04 02:16 '17 pukul 2:16 pagi 2017-08-04 02:16

Pertanyaan lain tentang tag atau Ajukan pertanyaan