Version Control dengan Git

Kejadian umum dalam riset

Diambil dari Piled Higher and Deeper oleh Jorge Cham.

Mengapa Version Control?

Selama ini kita mungkin sudah terbiasa dengan cara tradisional dalam melakukan version control seperti yang dapat kita lihat dari komik di atas. Perubahan nama file sebagai version control memang mudah, tapi akan dapat menimbulkan masalah seperti:

  • Meningkatnya jumlah file yang disimpan.
  • Tidak mudah untuk melihat perubahan file dari satu versi ke versi lainnya.
  • Penamaan file sering kali tidak konsisten dan dapat membuat bingung.
  • Melacak perubahan yang menyebabkan bug rumit dan memakan waktu yang lama.
  • Berbagi file dan berkolaborasi dengan orang lain menjadi lebih susah apabila kita ingin juga bekerja pada waktu yang bersamaan.
  • Penyimpanan backup dari versi terakhir tidak otomatis file yang kita kerjakan.

Version control modern dapan menjadi sarana untuk mengatasi permasalahan di atas dalam pengelolaan file.

Dalam sejarahnya, ada beberapa jenis version control yang cukup umum digunakan. Pada kesempatan kali ini kita akan fokus dalam penggunaan Git sebagai metode version control modern.

Pengenalan Git

Sistem Git memungkinkan untuk menyimpan histori atau versi file secara otomatis dan terdistribusi.

Git sendiri menggunakan konsep Directed Acyclic Graph (DAG) untuk menyimpan histori dari file yang kita kerjakan.

Bagi banyak orang desain Git sendiri terlihat cukup rumit, namum dalam penggunaan sehari-hari kita tidak perlu mengkhawatirkan basis implementasinya.

Terminologi

Ada beberapa kosa kata yang sering digunakan dalam pembahasan Git:

Terminologi Penjelasan
Repository Satuan kerja dari Git yang melingkupi beberapa file dan direktori yang terlacak.
Commit Rekaman repo dari satu waktu tertentu.
Staging Proses menambahkan file ke dalam wadah untuk direkam sebagai commit.
Branch Pointer dengan nama yang mengarah ke suatu commit di repo.
Merge Penggabungan dari dua cabang histori yang berbeda.
Remote Lokasi eksternal tempat penyimpanan repo.
Pull Memperbarui file lokal dengan file yang ada di remote repo.
Push Memperbarui file di remote repo dengan file lokal.

Command Dasar

Command dasar yang sering digunakan untuk menggunakan Git:

Command Penjelasan
git init Membuat repo baru.
git status Melihat status ringkasan dari repo saat ini.
git log Melihat log dari repo.
git add [Nama File] Menambahkan file ke dalam staging area.
git commit -m [Pesan] Menyimpan file yang ada di staging area ke dalam commit baru di repo.
git checkout [Nama Branch] Pindah ke branch.
git checkout -b [Nama Branch] Membuat branch baru dan pindah ke branch tersebut.
git clone [URL] Mengunduh repo dari remote ke local.
git remote add [Nama Remote] [URL] Menambahkan remote baru ke repo lokal.
git pull Memperbarui file lokal dengan file yang ada di remote repo.
git push Memperbarui file di remote repo dengan file lokal.
git merge [Nama Branch] Menggabungkan branch yang sedang aktif dengan branch yang dituju.

Ada dua jenis remote repo yaitu yang menggunakan autentikasi HTTPS atau SSH:

  • HTTPS: https://github.com/[USER atau ORGANISASI]/[NAMA REPO].git
  • SSH: git@github.com:[USER atau ORGANISASI]/[NAMA REPO].git

Setup Git

Sebelum menggunakan Git, kita harus melakukan beberapa pengaturan yang akan menjadi identitas kita. Identitas ini akan berguna sebagai penanda dari commit.

Untuk penggunaan paling sederhana, kita harus mengatur nama dan alamat email dengan cara:

git config --global user.name 'Peneliti BRIN'
git config --global user.email 'email@brin.go.id'

Selain itu, ada beberapa hal yang dapat kita gunakan seperti editor, alias, dan warna. Pengaturan juga dapat disimpan di dalam file .gitconfig yang berada di direktori home untuk tingkat global atau di dalam direktori repo untuk pengaturan lokal.

Contoh isi file .gitconfig:

[user]
        name = Peneliti BRIN
        email = email@brin.go.id
[core]
        editor = nano
[alias]
        co = checkout
        ci = commit
        br = branch
        lg = log --oneline --graph --decorate
        lga = log --oneline --graph --decorate --all
        st = status -s
        revchange = !git checkout . && git clean -dfX
[color]
        diff = auto
        status = auto
        branch = auto
        interactive = auto
        ui = true
        pager = true
[pull]
        ff = only

Penggunaan GitHub

Ada beberapa situs yang sering digunakan sebagai lokasi remote repo.

Pada workshop kali ini kita akan menggunakan GitHub sebagai lokasi remote. Selain GitHub, beberapa situs populer lainnya adalah GitLab dan BitBucket.

Untuk menggunakan GitHub, pastikan kalian telah mendaftarkan diri dan memilih user ID yang unik. Setelah mendaftar, pastikan untuk mendaftarkan alamat email yang kalian gunakan pada tahap sebelumnya agar akun kalian dapat terhubung dengan commit yang telah kalian buat.

Autentikasi dengan SSH

Secure Shell (SSH) adalah protokol jaringan komunikasi antara dua perangkat jarak jauh. Dalam konteks penggunaan GIT, kita akan menggunakan sistem autentikasi SSH untuk mengakses remote repo.

Untuk pengguna sistem berbasis UNIX, protokol SSH dapat diakses secara langsung melalui terminal. Untuk pengguna Windows 10/11 versi terbaru, fitur SSH harus diaktifkan terlebih dahulu di pengaturan Opsional Aplikasi > Pengaturan > Windows, lalu mencari “OpenSSH” di fitur yang diinstal. Selain itu, kita juga dapat menggunakan aplikasi seperti PuTTY atau Git Bash untuk mengakses protokol SSH.

Untuk menggunakan autentikasi melalui SSH, kita harus membuat pasangan kunci (key pair) terlebih dahulu.

Setelah membuat pasangan kunci, kita dapat menambahkan kunci publik (public key) ke dalam akun GitHub kita melalui tautan ini. Pastikan bahwa perintah ssh -T git@github berhasil dijalankan.