Bagaimana Cara Kerja Cabang Git?

Cabang adalah fitur pelacakan versi utama Git dan terus digunakan oleh tim yang bekerja pada basis kode perangkat lunak yang sama. Kami akan memeriksa bagaimana mereka bekerja di bawah tenda, dan bagaimana Anda dapat menggunakannya untuk meningkatkan alur kerja Git Anda.

Apa Itu Cabang, Sungguh?

Cabang digunakan untuk membagi sejarah Git. Anda dapat menganggap komit Git seperti sederet perubahan yang kembali ke masa lalu. Anda dapat “memeriksa” salah satu dari komit ini dan memindahkan direktori lokal Anda kembali tepat waktu ke keadaan di mana komit itu dibuat.

Cabang umumnya digunakan untuk mengerjakan fitur eksperimental, atau perubahan yang memakan waktu cukup lama, atau apa pun yang dapat merusak repositori. Misalnya, Anda mungkin sedang mengerjakan pemfaktoran ulang sebagian besar basis kode Anda, dan sampai selesai, Anda ingin master cabang menjadi kuat.

Begitu baru feature cabangnya stabil, bisa digabung kembali mastersering oleh tarik permintaanyang merupakan proses yang memungkinkan peninjauan dan pengujian kode dilakukan sebelum perubahan dilakukan.

Namun, di bawah tenda, cabang bekerja sedikit berbeda dari yang Anda duga sebelumnya. Di Git, cabang hanyalah label, atau penunjuk, ke komit tertentu. Itu saja, master cabang hanya menunjuk ke komit terbaru yang dibuat untuk master; saat Anda membuat komit baru, label diperbarui untuk menunjuk ke komit baru.

Meskipun berguna untuk menganggap komit sebagai bergerak maju dalam waktu; pada kenyataannya, Git saling menunjuk. Setiap komit memiliki referensi ke komit terakhir, dan rantai ini digunakan untuk membangun status repositori.

Jika Anda membuat cabang baru, semuanya bekerja sedikit berbeda. Cabang mana pun yang Anda kunjungi (termasuk git checkout <branch>) akan digunakan sebagai label untuk komit baru.

Untuk membuat cabang dalam contoh ini, pertama-tama Anda harus memastikan HEAD repositori Anda disetel ke master cabang Ini karena Anda dapat membuat cabang dari mana saja—termasuk komit sebelumnya atau komit ke cabang lain.

git checkout master

Kemudian buat cabang baru, dan ubah di sini:

git branch feature
git checkout feature

Pada titik ini, tidak ada yang berubah di repositori Anda. Keduanya feature dan master label cabang menunjuk ke komit yang sama.

Namun, apa pun yang Anda lakukan mulai saat ini akan ditambahkan ke feature cabang Lebih khusus lagi, komit baru akan dibuat, disetel untuk menunjuk kembali ke komit saat ini, dan label “fitur” akan diperbarui untuk menunjuk ke komit baru ini.

Anda juga bisa checkout master dan buat lebih banyak komitmen ke cabang master. Itu tidak akan mempengaruhi feature cabang, karena semua label tahu adalah bahwa itu menunjuk ke komit tertentu. Itu tidak akan diperbarui ke master label.

Integrasi dan Rebasing

Tentu saja, cabang tidak akan sangat berguna jika mereka terjebak di sana selamanya, jadi Git menyediakan alat untuk menggabungkannya kembali master cabang Secara teknis, Anda dapat menggabungkan sub-cabang ke cabang lain mana pun, selama riwayatnya cocok.

Kasus paling sederhana adalah di mana Anda memiliki cabang sederhana yang hanya perlu digabungkan kembali. Anda dapat checkout master cabang, lalu jalankan git merge feature untuk “memutar ulang” semua komit yang dibuat pada cabang fitur untuk dikuasai.

Ini menggabungkan mereka ke dalam timeline utama dan membuat “gabungan komit” baru dengan perubahan.

Tidak selalu sesederhana itu, dan dalam banyak kasus, Anda harus menggabungkan konflik yang perlu diselesaikan. Ini mungkin termasuk cabang yang mengubah baris yang sama dalam file, pemindahan atau penghapusan file, atau jenis bug lain yang muncul saat perangkat lunak diubah sejak feature cabang dibuat.

Jika Anda memiliki jangka panjang feature cabang, salah satu cara untuk mengurangi masalah ini adalah dengan sering melakukan penggabungan, sebaliknya kali ini—dari master di feature. Ini mempertahankan feature up to date, dan meskipun tidak benar-benar mengurangi beban kerja yang dibutuhkan, itu mencegahnya dari kekacauan besar.

Pendekatan ini umum untuk cabang berumur panjang dan umumnya dianggap sebagai praktik terbaik untuk Git.

Alat lain yang juga digunakan dalam situasi ini adalah rebasing Pada dasarnya, rebasing seperti mengambil seluruh cabang dan memindahkannya untuk memulai di lokasi baru, biasanya komit terbaru di repositori. Ini mengarah ke riwayat Git yang lebih bersih dalam beberapa kasus dan merupakan solusi pilihan untuk beberapa situasi kompleks.

Namun, riwayat Git “tidak dapat diubah”, dan dengan demikian, menyalin ulang salinan berfungsi daripada benar-benar memindahkannya. Ini dapat menyebabkan banyak masalah dengan cabang bersama, jika tim Anda tidak berkomunikasi dengan baik—jika Anda melakukan rebase, dan rekan kerja Anda membuat komitmen baru pada fitur cabang “lama”, yang sekarang telah dihapus, itu akan menjadi dibiarkan terdampar. Mereka harus menyimpan komit dan memasukkannya ke cabang baru untuk merekonsiliasi perubahan.

Bagaimana Anda Menggunakan Cabang?

Untuk mulai membuat cabang baru, Anda harus meletakkan repositori dalam keadaan yang benar sehingga label cabang baru dimulai di tempat yang Anda inginkan. Jika Anda bercabang master, cukup periksa seluruh cabang untuk memulai dengan komit terbaru. Jika tidak, Anda dapat menempatkan repo Anda dalam status HEAD terpisah dengan memeriksa komit individu.

git checkout master

git checkout aa3e570923b8ee61414cec17d9033faab4f084a6

Kemudian, Anda dapat membuat cabang baru, dan beralih ke sana dengan checkout:

git branch feature
git checkout feature

Ini dapat dilakukan dengan satu perintah, termasuk -b bendera untuk checkout:

git checkout -b feature

Pada titik ini, setiap komit yang dibuat ke repo Anda akan dibuat ke cabang baru.

Jika Anda perlu berpindah cabang lagi, jalankan saja git checkout master untuk kembali normal.

Jika Anda memiliki perubahan lokal yang perlu Anda transfer, Anda dapat menempatkannya git stash. Perubahan akan disimpan dan dapat diterapkan kembali setelah berpindah cabang.

Leave a Comment

Your email address will not be published. Required fields are marked *