Memahami riwayat Git
Layanan Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019
Git menyimpan riwayat sebagai grafik rekam jepret — yang disebut penerapan — dari seluruh repositori. Setiap penerapan juga berisi penunjuk ke satu atau beberapa penerapan sebelumnya. Penerapan dapat memiliki beberapa orang tua, membuat riwayat yang terlihat seperti grafik alih-alih garis lurus. Perbedaan sejarah ini sangat penting dan merupakan alasan utama pengguna menemukan Git membingungkan.
Catatan
Jika Anda tidak dapat menemukan perubahan dalam riwayat Git yang Anda ketahui telah Anda buat, pelajari selengkapnya tentang cara kerja penyederhanaan riwayat Git di Git kehilangan perubahan saya: Melihat penyederhanaan riwayat Git.
Menerapkan dasar-dasar riwayat
Mulailah dengan contoh riwayat sederhana: repositori dengan 3 penerapan linier.
Penerapan A adalah induk dari penerapan B, dan penerapan B adalah induk dari penerapan C. Riwayat ini terlihat sangat mirip dengan CVCS.
Panah yang menunjuk ke penerapan C adalah cabang.
Ini dinamai main
karena itu adalah nama default untuk cabang utama dalam repositori Git.
Cabang adalah penunjuk ke penerapan tertentu, itulah sebabnya percabangan sangat ringan dan mudah di Git.
Perbedaan utama dalam Git dibandingkan dengan CVCS adalah bahwa saya memiliki salinan lengkap repositori saya sendiri. Saya perlu menjaga repositori lokal saya tetap sinkron dengan repositori jarak jauh dengan mendapatkan penerapan terbaru dari repositori jarak jauh. Untuk melakukan ini, saya akan menarik cabang utama dengan perintah berikut:
git pull origin main
Salinan ini ("menarik") semua penerapan dari main
cabang repositori jarak jauh (dipanggil origin
secara default) ke main
cabang repositori lokal. Operasi penarikan menyalin satu penerapan baru, dan main
cabang di repositori lokal sekarang menunjuk ke penerapan baru ini.
Memahami riwayat cabang
Sekarang saya ingin membuat perubahan pada kode saya. Adalah umum untuk memiliki beberapa cabang aktif di mana Anda mengerjakan berbagai fitur secara paralel. Ini sangat kontras dengan CVCS, saat cabang baru berat dan jarang dibuat. Langkah pertama adalah memeriksa cabang baru menggunakan perintah berikut:
git checkout -b cool-new-feature
Ini adalah pintasan yang menggabungkan dua perintah: git branch cool-new-feature
untuk membuat cabang diikuti dengan git checkout cool-new-feature
mulai bekerja di cabang.
Dua cabang kini menunjuk ke penerapan yang sama.
Aku akan membuat beberapa perubahan pada cool-new-feature
cabang dalam dua penerapan baru, E dan F.
Komitmen saya dapat dijangkau oleh cool-new-feature
cabang karena saya membuat mereka di cabang itu.
Saya sudah selesai dengan fitur saya dan ingin menggabungkannya ke dalam main
.
Untuk melakukannya, saya akan menggunakan perintah berikut:
git merge cool-feature main
Struktur grafik riwayat menjadi terlihat saat ada penggabungan. Git membuat penerapan baru ketika saya menggabungkan cabang saya ke cabang lain. Ini adalah penerapan penggabungan. Tidak ada perubahan yang disertakan dalam penerapan penggabungan ini karena saya tidak memiliki konflik. Jika saya mengalami konflik, penerapan penggabungan akan menyertakan perubahan yang diperlukan untuk menyelesaikan konflik tersebut.
Sejarah di dunia nyata
Berikut adalah contoh riwayat Git yang lebih menyerupai kode dalam pengembangan aktif dalam tim. Ada tiga orang yang menggabungkan penerapan dari cabang mereka sendiri ke cabang utama sekitar waktu yang sama.
Sekarang setelah Anda memahami bagaimana cabang dan penggabungan membuat bentuk grafik, ini seharusnya tidak terlalu menakutkan!