Git Rebase: Panduan Praktis
Tentu, dengan senang hati saya akan membantu! Git rebase adalah perintah ampuh yang memungkinkan Anda mengubah riwayat proyek dengan berbagai cara, seperti mengedit, menghapus, dan menghilangkan komitmen. Ini sangat berguna untuk menjaga riwayat yang bersih dan mudah dibaca. Namun, `git rebase` bisa sangat rumit dan dapat memiliki konsekuensi yang signifikan jika tidak digunakan dengan benar. Oleh karena itu, sangat penting untuk memahami apa yang dilakukan setiap langkah.
Tutorial ini akan mencakup dasar-dasar `git rebase`, dengan bantuan contoh, dan akan menunjukkan cara penggunaannya dalam alur kerja.
Apa itu Git Rebase?
Git rebase adalah perintah di Git, sistem kontrol versi terdistribusi. Perintah ini memungkinkan pengembang untuk mengintegrasikan perubahan dari satu cabang ke cabang lainnya.
Rebase sering digunakan untuk membuat riwayat proyek yang bersih dan linier. Ini adalah cara untuk "memutar ulang" perubahan dari satu baris pekerjaan (cabang) ke yang lain dengan cara yang menghasilkan integrasi yang lancar dan bebas konflik.
Begini cara kerjanya:
Anda mulai dengan memiliki cabang tempat Anda melakukan beberapa pekerjaan. Sementara itu, cabang utama (atau lainnya) telah menerima komitmen baru. Untuk menyertakan komit baru ini di cabang fitur Anda, Anda dapat menggunakan git rebase.
Rebasing secara efektif menyimpan perubahan di cabang Anda saat ini, untuk sementara "menghapus" komit yang telah Anda buat di cabang Anda, menerapkan komit baru dari cabang lain, dan kemudian menerapkan kembali perubahan Anda satu komit pada satu waktu di atas ini.
Ini adalah penting untuk dicatat bahwa rebasing menulis ulang riwayat komit dengan membuat komit baru untuk setiap komit di cabang asli. Ini dapat membuat riwayat proyek lebih bersih dan lebih mudah dipahami.
Memahami Git Rebase
Berikut panduan langkah demi langkah untuk mempelajari dan memahami proses Git Rebase dengan contoh praktis:
Langkah 1: Memahami Dasar-Dasar Git
Pertama, Anda harus sudah memiliki pemahaman yang baik tentang dasar-dasar Git, termasuk konsep-konsep seperti repositori, komit, cabang, direktori kerja, area pementasan, dll. Jika Anda tidak terbiasa dengan ini, akan bermanfaat untuk mengambil langkah mundur dan memahami konsep-konsep ini sebelum masuk ke `git rebase`.
Langkah 2: Siapkan Repositori untuk Latihan
Berikutnya, kami akan menyiapkan repositori sederhana untuk latihan:
# Buat direktori baru untuk repositori Anda $ mkdir git-rebase-tutorial $ cd git-rebase-tutorial # Inisialisasi repositori Git baru $git init # Buat file dan buat komit pertama Anda $ echo "Baris Pertama" > contoh.txt $ git tambahkan contoh.txt $ git commit -m "Komit awal" # Buat beberapa komitmen lagi $ echo "Baris Kedua" >> contoh.txt $ git commit -am "Komit kedua" $ echo "Baris Ketiga" >> contoh.txt $ git commit -am "Komit ketiga"123456789101112131415161718# Buat direktori baru untuk repositori Anda$mkdirgit-rebase-tutorial$cdgit-rebase-tutorial # Inisialisasi repositori Git baru$git init # Buat file dan buat komit pertama Anda$echo "First Line">example.txt$git add example.txt$git commit-m"Initial commit" # Buat beberapa commit lagi$echo"Second Line">>example.txt$git commit-am"Second commit" $ echo"Third Line">>example.txt$git commit-am"Third commit"
Ini membuat repositori baru dan menambahkan tiga komit ke dalamnya. Anda dapat melihat riwayat menggunakan `git log`.
Langkah 3: Buat Cabang Baru
Sekarang, mari buat cabang baru dan buat beberapa komitmen lagi:
# Buat cabang baru $ git checkout -b fitur-cabang # Buat lebih banyak komitmen $ echo "Baris Fitur 1" >> feature.txt $ git tambahkan feature.txt $ git commit -m "Fitur komit 1" $ echo "Baris Fitur 2" >> feature.txt $ git commit -am "Feature commit 2"1234567891011# Buat cabang baru$git checkout-bfeature-branch # Buat lebih banyak komitmen$echo"Feature Line 1">>feature.txt $git add feature.txt$git commit-m "Feature commit 1" $echo"Feature Line 2">>feature.txt$git commit-am"Feature commit 2"
Sekarang kita telah membuat cabang bernama `feature-branch` dan menambahkan dua commit ke dalamnya.
Langkah 4: Memahami Konsep Rebase
Sekarang, katakanlah saat Anda sedang mengerjakan `feature-branch` Anda, orang lain membuat perubahan pada `main` yang perlu Anda masukkan ke dalam cabang Anda. Di sinilah `git rebase` berguna.
# Cabang utama checkout $ git checkout utama # Buat perubahan yang dibutuhkan cabang fitur $ echo "Baris Lain" >> contoh.txt $ git commit -am "Komit cabang utama" # Sekarang, checkout cabang fitur dan rebase ke main $ git checkout fitur-cabang $ git rebase main12345678910# Checkout main branch$git checkout main # Buat perubahan yang dibutuhkan cabang fitur$echo"Another Line">>example.txt$git commit-am"Main branch commit" # Sekarang, checkout cabang fitur dan rebase ke main $git checkout feature-branch$git rebase main
Saat Anda menjalankan git rebase main, Git akan:
Menemukan nenek moyang yang sama dari `main` dan `feature-branch`. Simpan sementara perubahan yang dibuat di `feature-branch` sejak ancestor tersebut. Beralih ke cabang `utama`. Terapkan perubahan.
Hasilnya adalah cabang fitur Anda sekarang menyertakan komit terbaru di `main` .
Langkah 5: Menyelesaikan Konflik
Jika perubahan yang dibuat pada cabang yang Anda rebasing bertentangan dengan perubahan cabang Anda, Git akan menjeda rebase pada komitmen tersebut untuk memungkinkan Anda menyelesaikan konflik.
Jika muncul konflik, Git akan menunjukkan kepada Anda file mana yang mengalami konflik. Anda harus membuka file-file ini, menyelesaikan konflik, dan kemudian melanjutkan rebase seperti ini:
# Setelah menyelesaikan konflik $git tambahkan. $ git rebase --continue123# Setelah menyelesaikan konflik$git add.$git rebase--continue
Jika Anda ingin membatalkan rebase karena alasan apa pun, Anda dapat melakukannya dengan perintah berikut:
$ git rebase --abort1$git rebase- -abort
Langkah 6: Rebase Interaktif
Salah satu fitur rebase yang paling kuat adalah rebase interaktif (-i), yang memungkinkan Anda untuk memodifikasi komit saat dipindahkan ke basis baru. Ini sering digunakan untuk membersihkan riwayat yang berantakan sebelum menggabungkan cabang fitur ke `main`.
Mari kita buat riwayat yang berantakan untuk melihat cara kerjanya:
# Buat beberapa komitmen kecil $ echo "Baris Lain" >> feature.txt $ git commit -am "Komitmen lain" $ echo "Baris Lain" >> feature.txt $ git commit -am "Lagi-lagi komit" $ echo "Baris Lain" >> feature.txt $ git commit -am "Masih banyak komitmen"123456789# Buat beberapa komitmen kecil$echo"Baris Lain">>feature.txt$git commit-am"Komitmen lain" $echo"Baris Lain">>feature.txt$git komit -am"Yet another commit" $echo"Another Line">>feature.txt$git commit-am"Masih banyak commit"
Sekarang Anda dapat secara interaktif mengubah empat commit terakhir dengan `git rebase -i HEAD~4`. Ini akan membuka editor teks dengan daftar empat komit terakhir dan opsi untuk setiap komit:
pick 1d1b6fd komit lain pilih 6c0f848 Satu lagi komit pick cbf6f7d Masih banyak lagi commits123pick1d1b6fdAnother commitpick6c0f848Yet another commitpick cbf6f7d Masih banyak lagicommits
Di sini, `pick` berarti bahwa komit akan disertakan dalam rebase. Anda dapat mengganti `pick` dengan:
reword: Sertakan komit tetapi ubah pesan komit. sunting: Sertakan komit tetapi berhenti untuk mengubah. squash: Sertakan komit tetapi gabungkan dengan komit sebelumnya. fixup: Seperti "squash", tetapi buang pesan log komit ini. exec: Jalankan beberapa perintah (sisa baris) menggunakan shell. drop: Hapus komit.
Misalnya, jika Anda ingin menggabungkan tiga komit terakhir menjadi satu, Anda dapat mengganti `pick` dengan `squash` (atau singkatnya s) untuk dua komit terakhir:
pick 1d1b6fd komit lain squash 6c0f848 Satu lagi komit squash cbf6f7d Masih ada lagi commits123pick1d1b6fdAnother commitsquash6c0f848Yet another commitsquash cbf6f7d Masih ada lagicommits
Setelah Anda menyimpan dan menutup file, sebuah editor akan terbuka untuk Anda mengubah pesan komit dari squashed commit yang baru.
Langkah 7: Memahami Kapan Menggunakan Gabung vs. pada alur kerja yang Anda atau tim Anda sukai. Secara umum, `merge` adalah pilihan yang baik ketika Anda ingin menggabungkan kode dari dua cabang yang berbeda dan ingin mempertahankan riwayat kedua cabang apa adanya.
Rebase adalah pilihan yang baik ketika Anda ingin memperbarui cabang fitur Anda dengan kode terbaru dari cabang lain, dan Anda menginginkan riwayat linear.
Langkah 8: Bersihkan
Ingat, `git rebase` dapat mengubah riwayat komit. Ini bisa berbahaya jika tidak dilakukan dengan benar, terutama dengan cabang yang sedang dikerjakan orang lain. Jika Anda bekerja dalam tim, sebaiknya hindari rebasing cabang yang digunakan orang lain kecuali Anda yakin semua orang memahami apa yang terjadi.
Saya harap ini membantu Anda memulai dengan `git rebase`! Latihan menjadi sempurna, jadi teruslah berlatih konsep dan perintah ini sampai Anda merasa nyaman dengannya. Ingatlah bahwa Anda selalu dapat memeriksa dokumentasi git rebase dengan mengetikkan git help rebase ke baris perintah Anda.
Referensi tecadmin.com