Melakukan hal yang salah sangat umum terjadi saat bekerja dengan Git, tetapi untungnya, Git dibuat untuk melacak riwayat versi repositori Anda. Selalu ada cara untuk membalikkan perubahan yang dilakukan, dan jika Anda ingin membatalkan penggabungan Git, caranya cukup mudah.
Membatalkan Penggabungan Git
Pada dasarnya, ada dua cara untuk melakukannya, dan semuanya tergantung pada apakah Anda sudah mendorong atau tidak perubahan pada kontrol sumber Anda. Jika Anda sudah berkomitmen dan mendorong ke layanan seperti GitHub, umumnya dianggap tidak dapat diubah, kecuali jika Anda ingin memaksakan dorongan, yang berbahaya. Anda tidak ingin pernah “menghapus” komit, dan penggabungan git ditambahkan sebagai “penggabungan komit”. Anda akan ingin menggunakan git revert untuk membatalkan perubahan dengan aman, dan melakukan pembatalan itu sebagai komit baru.
Namun, jika Anda baru saja mengacaukan sesuatu secara lokal, mengumpat pada keyboard Anda, dan mencari solusi di Google, Anda masih dapat menghapusnya dengan aman gabungkan komit dan jaga riwayat Git Anda tetap bersih dengan git reset.
Menyetel Ulang Secara Lokal
Ini paling mudah—dan paling aman—untuk menangani penyetelan ulang Git dengan klien GUI Git, di mana Anda dapat dengan mudah melihat riwayat cabang. Ini tidak perlu tentu saja, tetapi visual membantu ketika Anda memiliki cabang yang kompleks.
Dalam contoh ini, kami ingin membatalkan penggabungan cabang fitur ke dalam cabang utama. Karena cabang fitur sebenarnya belum disentuh, kami ingin menyetel ulang label cabang “utama” untuk menunjuk ke komit terakhir.
Untuk melakukan ini, kami ingin git checkout cabang utama, lalu setel ulang ke komit sebelumnya. Singkatan untuk ini adalah HEAD^, dan kita dapat melakukan hard reset ke komit terakhir. Jika Anda tidak nyaman dengan reset “destruktif”, Anda dapat melakukan soft reset, lalu secara manual membuang perubahan komit gabungan.
git reset –hard HEAD^
Seperti yang Anda lihat, ini sepenuhnya menghilangkan komit gabungan, dan membiarkan cabang fitur tidak tersentuh.
TERKAITBagaimana Cara Kerja Git Reset Sebenarnya? Soft, Hard, dan Mixed Resets Explained
Jika komit yang perlu Anda atur ulang bukan yang terakhir sebelum HEAD cabang saat ini, Anda cukup menyalin ID SHA1 untuknya, dan mereset ke komit khusus itu.
Mengembalikan Komit Itu Sudah Pushed
Sayangnya, jika Anda sudah mendorong, tidak ada cara untuk menghapus komit gabungan tanpa menimpa riwayat repositori Anda. Anda dapat melakukan langkah yang sama seperti yang ditunjukkan di atas, dan mendorong ke repositori upstream (seperti GitHub) dengan flag –force. Tapi ini umumnya dianggap merusak, dan tidak aman ketika Anda memiliki banyak kolaborator, karena mereka semua perlu memperbarui repos lokal mereka.
Cara lain untuk membatalkan komit di Git adalah mengembalikannya. Mengembalikan komit akan menerapkan perubahan yang berlawanan pada repositori—untuk setiap baris yang ditambahkan, baris tersebut akan dihapus. Untuk semua yang dihapus, ditambahkan kembali, dan seterusnya. Ini secara efektif membalikkan komit, dengan sisi negatifnya adalah proses ini akan sedikit mengacaukan riwayat versi Anda. Namun secara umum, ini adalah praktik yang baik untuk membalikkan kesalahan.
Mengembalikan komit cukup sederhana. Pertama, Anda harus menjalankan git log untuk mendapatkan daftar komit dan nomor ID mereka.
Kemudian, Anda dapat menyalin hash SHA1, dan mengembalikan komit dengan git revert:
git revert 62ff517cc7c358eaf0bffdebbbe1b38dea92ba0f
Anda harus mendorong “revert commit” baru ini ” ke GitHub untuk memperbaiki masalah.