-
Notifications
You must be signed in to change notification settings - Fork 11
VCS
Disclaimer: belajar version control system lebih enak sambil dicobain. Jadi teori di sini secukupnya aja, tapi lebih banyak habiskan waktu untuk coba-coba ya 🚀
Dalam mengerjakan sebuah proyek, seringkali kita perlu berkolaborasi. Dibutuhkan sistem pengerjaan yang terstruktur agar kolaborasi memiliki akuntabilitas dan tidak mengakibatkan kesalahan atau bug yang mengganggu jalannya proyek. Kita bisa menggunakan version control system (VCS) untuk manajemen aset-aset proyek seperti source code.
Berikut ini fungsi-fungsi VCS secara lebih lengkap:
-
Kolaborasi
VCS memungkinkan banyak orang/device mengerjakan satu proyek secara bersamaan. Tiap orang/device punya copy aset-aset proyek sendiri. Saat integrasi dengan master copy diperlukan, barulah dia melakukan staging dan commit pada file-file yang dikerjakan agar master copy juga memiliki versi file yang sama dengannya. -
Integrasi
Pengerjaan yang dilakukan masing-masin orang/device tidak saling memengaruhi sampai integrasi/merging dilakukan. Jika ditemukan kesalahan saat integrasi, penentuan versi yang benar dikembalikan kepada orang yang melakukan integrasi. -
Akuntabilitas
VCS menyimpan riwayat pengubahan pada proyek, sehingga jika terdapat kesalahan fatal, orang yang memiliki akses ke proyek bisa memilih untuk kembali atau revert ke versi sebelumnya yang belum terdapat kesalahan. Hal ini mudah karena setiap versi pengubahan yang dilakukan dapat diidentifikasi kapan, siapa yang mengubah, dan bagian apa yang diubah.
Secara umum, terdapat dua jenis version control yang dibedakan dari cara versioning-nya, yaitu:
-
Centralized Version Control
We commit - They update -
Distributed Version Control
We commit - We push - They pull - They update
Terdapat beberapa contoh Distributed VCS, seperti Git, Mercurial, dan Subversion. Kita akan lebih banyak membahas Distributed Version Control kali ini, persisnya Git.
Git memiliki 4 state untuk aset/file proyek:
- Untracked berarti file tersebut baru ditambahkan atau baru dihapus (di working directory)
- Modified berarti ada perubahan pada filemu namun kamu belum melakukan commit pada database (di working directory)
- Staged berarti kamu sudah menandai file yang diubah pada versimu untuk kemudian dilakukan commit (di staging area)
- Committed berarti data perubahan file telah tersimpan aman pada database lokal (di git directory/repository)
Kita bisa menggunakan Git dengan berbagai jenis antarmuka:
- CLI (Command Line Interface): UNIX shell, Git Bash, Powershell
\ - GUI (Graphical User Interface): GitHub Desktop, Sourcetree, VS Code built-in
\
Pada LBE ini, kita akan coba belajar Git Bash dan GitHub Desktop.
- Download Git dan Git Bash di http://git-scm.com/download
- Konfigurasi dan install (stepnya cukup banyak, bisa mengikuti tutorial https://www.niagahoster.co.id/blog/git-tutorial-dasar/)
- Buka VS Code, tekan
Ctrl + `
- Di dropdown jenis terminal (kanan atas), pilih Git Bash
- Download GitHub Desktop di https://desktop.github.com/
- Lakukan instalasi
- Autentikasi akun GitHub-mu dengan memilih File > Options > Accounts > Sign in > Sign in using your browser
Secara lokal, repository bisa kita inisialisasi dengan menjalankan:
git init
git add .
git commit -m "Initialize project"
Setelah membuat repository lokal, kita bisa menambah remote repository yang tersimpan di cloud agar menjadi rujukan bagi repository lokal.
git remote add [nama pendek] [url git]
Biasanya kita menambah remote origin dari sebuah repository, sehingga command di atas menjadi seperti berikut: git remote add origin [url]
.
Untuk melihat remote apa saja yang ada, jalankan perintah ini:
git remote -v
Untuk membuat local copy dari remote repository yang sudah ada sebelumnya, kita bisa menggunakan git clone
. Command ini akan membuat sebuah direktori baru untuk repository yang di-clone di lokal, mengisi direktori tersebut dengan direktori .git
dan aset-aset repository yang ada sesuai dengan versi pad saat git clone
dilakukan.
git clone [url git]
Setiap remote repository memiliki remote branch. Sebagai contoh, setelah kita duplikasi repository, kita bisa melihat semua remote branches dengan menjalankan perintah:
git branch -a
Remote branches bukanlah branch yang kita miliki di local. Agar kita juga memiliki local copy dari tiap remote branch, kita bisa menjalankan perintah:
git checkout [nama branch yang ingin dibuat local copy-nya]
Perintah di atas akan secara otomatis membuat local copy berdasarkan remote branch dengan nama yang sama.
Lebih lanjut lagi tentang branch, branching adalah membuat cabang dari repository utama (master) dan melanjutkan melakukan pekerjaan pada cabang yang baru tersebut tanpa perlu khawatir mengacaukan yang utama.
Untuk menambah branch baru, kita bisa jalankan perintah ini:
git branch [nama branch]
Untuk berpindah branch, kita bisa menggunakan perintah di bawah ini:
git checkout [nama branch]
Untuk melihat branch apa saja yang ada pada local repository, lakukan perintah ini:
git branch -v
git branch -a (juga menampilkan remote branches, lebih lengkap)
Merging memungkinkan kita mensinkronkan satu branch dengan branch lainnya. Apabila terdapat conflicting changes, Git akan stop proses merging dan mengembalikan ke kita untuk mengambil tindakan atau melakukan fix dengan memilih salah satu versi dari conflicting change tersebut atau menghapus keduanya.
Sebagai contoh, untuk melakukan merge branch feature-a
dengan master
, kita perlu melakukan:
git checkout master
git merge feature-a
- Clone repository ini (https://github.com/wiliamhw/LBE-Alpro-2021)
- Buat branch baru, namakan dengan namamu
- Tambah file project LBE-mu
- Lakukan commit dan push ke origin/branch-mu
Lab Algoritma Pemrograman - 2021
- HTML & Ekstensi VS Code
- CSS & VCS
- JS & Chrome Dev Tools