Ditulis oleh Lort Kegelaban pada October 01, 2022
Ave Dromtek.
Sobat-sobat sekalian pernah dengan kata Git ga sih ? atau GitHub ? kalau belum tau ayo kenalan dulu.
Git secara umum alat untuk manajemen kodingan kita, nama kerennya version control system (VCS). Di situ kita bisa nandain kita habis ngoding apa, mau kolab jadi mudah dan punya magic mesin waktu yang bisa ngerekam jejak kodingan kamu, ketika kamu salah hapus file bisa di cari backupnya di Git.
Lalu GitHub itu apa kak? mereka itu ibarat sosmed tapi isinya kodingan yang sudah dibungkus sistem Git -- repository kode. Di sana kamu bisa lihat kodingan orang lain, memperbaiki kodingan orang lain ataupun minta perbaikan dan tentunya bisa jadi branding image kamu sebagai programmer baik untuk jadi porto untuk ditaro di CV atau kolaborasi dengan komunitas open source.
Jadi apakah punya akun GitHub wajib kak? jawabanya enggak harus punya. Tapi kalau kamu punya, kamu bisa lihat trend-trend dari bahasa yang kamu pake, repo sejenis yang kamu kasih bintang, ngelihat apa sih yang temen kamu lagi sukai (caranya buka profile github orang dan lihat stars) dan eksplore di GitHub.
1. Pencet Tab Stars , 2. List repo yang di sukai
1. Pencet Tab Explore , 2. List rekomendasi dari repo yang kamu suka, 3. Repo yang lagi trending
Sebelum kita jauh mendalam GitHub mari kita kenalan dengan Git dulu supaya afdol memakai GitHub nya.
Git merupakan salah satu dari version control system (temannya Subversion, Dracs dsb). Version Control adalah sistem yang mencatat perubahan (changes) file dan folder dari waktu ke waktu sehingga kita bisa kembali ke snapshot perubahan pada titik waktu tertentu suatu saat nanti.
Illustrasi kerja VCS melalui git
Biar lebih mudah di ingat, anggap saja ini mesin waktu untuk file dan folder supaya kamu bisa kembali kapan saja untuk melihat file/folder lawas.
Branch adalah kumpulan baris waktu komit-komit yang terekam oleh git, Main branch adalah branch utama dari repository kode kamu.
Kondisi kommit adalah kondisi sebuah file terdaftar dan perubahanya terekam oleh database VCS (dalam kasus ini Git) yang bisa kita tilik balik versi lampaunya. Sebuah file/folder mencapai kondisi komit ada kondisi tertentu yang harus dilalui (bisa dicek dengan git status
) :
Status yang ngasih tau kalau file itu ada perubahan dari komit terakhir. File yang statusnya modified bakal dibandingin perubahanya sama git dari perubahan komit terakhir, jadi bisa dibuang perubahanya kalau enggak perlu atau ada kesalahan.
Status file/folder yang baru didaftarkan ke branch repository kode (git add
) untuk nanti masuk komit, lawanya status ini untracked.
Status file sudah aman tercatat ke database git (git commit
), kalau kita ada perubahan yang tidak inginkan cukup git reset HEAD
untuk kembali ke komit terakhir.
Selain kondisi file, ada hal terkait file sistem yang perlu kamu ketahui untuk memahami kondisi file.
File sistem ini dibagi menjadi 3 juga:
1. Working Tree, 2. Hasil kerjaan staging area
Working tree adalah lokasi kamu saat berkerja dengan kode, seperti mengedit dan semacamnya.
Ini memang tidak terlihat tampak, tetapi akan jelas ketika kamu melakukan checkout branch dari 2 branch yang memiliki perubahan masing-masing.
Stagging area yang bertugas mencatat sebuah status file sebelum komit ke branch, baik itu modified, staged ataupun untracked.
.git
DirectoryFolder ini berisi database berisi tentang branch dan snapshotnya. Ini adalah jantung dari repository git dari kode kamu.
Kita bisa membuat branch baru (git switch -c <nama branch>
) untuk membuat perubahan terpisah dari main branch, sebagai contoh branch X dan Y -- untuk melihat branch yang dimiliki git branch
.
Jadi bayangkan saja batang pohon rimbun yang ditebang denga cara rantingnya di potong-potong (git merge
) supaya pohonya tumbuh lurus keatas contohnya dibawah ini:
Illustrasi kerja VCS melalui git
Funfact: Kamu tahu sistem kerja git mirip blockchain berkerja: saling berikatan, seragam dan immutable setelah commit.
Git memungkinkan kamu untuk berkolaborasi antar sesama koder, ini terjadi karena Git memiliki mode :
Database rekaman perubahan disimpan secara lokal dalam folder .git
di folder repository kode (tempat kamu ngejalanin git init
), git hampir sepenuhnya berkerja di lokalan komputer kita.
Database ini yang nantinya akan disinkronisasikan -- dikirim dan dicocokan isinya dengan git di komputer lain (git push
), ke lokasi git yang kamu kehendaki seperti GitHub atau server git lainya.
Database yang dimaksud berupa file-file rekaman perubahan Git bukan RDBMS seperti mysql/postgres tetapi memiliki tujuan yang sama sebagai pangkalan data.
Penyimpanan database di lakukan pada sebuah server yang didedikasikan sebagai database Git, contohnya GitHub, Bitbucket dan gitea (kalau mau hosting server sendiri).
Penyimpanan terpusat mengharuskan kita mengunduh database git (git clone
) ke lokalan kita dan rutin melakukan pembaharuan (git pull
) agar database lokal dan server tersinkronisasi untuk menghindari konflik karena kurang update jika kolaborasi dengan programmer lain.
Distribusi terpusat seperti ini membolehkan kita untuk bertukar kode dan berkolaborasi dengan programmer lain. Caranya dengan melakukan fork
-pull request
-merge
:
fork
, kita membuat salinan dari branch repository kode programmer X, anggap saja ingin memperbaiki sesuatu.pull request
, kita mengajukan banding kode dari repositori yang kita fork ke repo programmer X.merge
, branch kode repository kita akan digabungkan ke repository programmer X, asal disetujui oleh programmer X itu sendiri.GitHub adalah layanan penyedia awan penyimpanan git sekaligus sosial media untuk pengguna git, ibarat instagramnya buat programmer.
Sosial media ini punya fitur :
Manfaatnya kamu punya akun GitHub :
Sekian ulasan berkenalan dengan cara kerja, masalah branching merging dan distribusi database pada Git.
Tulisan ini tidak berniat menguliti tentang Git terlalu dalam, teruntuk proses installasi dan teknik dasar akan diulas pada tulisan lain karena terlalu banyak bila nanti di gabung.