Tutorial Git (2021)
Panduan lengkap memahami Git untuk pemula beserta gambar.
Pada tulisan ini kita akan membahas Git yang menjadi version control system paling popular saat ini.
Version Control System
Version control system adalah sistem yang digunakan oleh programmer atau software developer untuk merekam dan mengelola perubahan yang terjadi pada source code dari waktu ke waktu.
Version control system akan merekam setiap perubahan yang terjadi dalam source code.
Tidak hanya merekam, dengan version control system kita bisa mengembalikan (undo) perubahan yang sudah dilakukan.
Sehingga jika perubahan mengakibatkan error, kita dengan mudah dapat membatalkan perubahan tersebut.
Terdapat banyak version control system, seperti Git, SVN, CVS, Mercurial dll.
Saat tulisan ini dibuat, Git menjadi version control software yang paling populer.
Git
Git adalah version control system yang bersifat open source dan dikembangkan pertama kali oleh Linus Torvalds pada tahun 2005.
Arsitektur yang digunakan Git adalah distributed architecture, sehingga Git termasuk jenis Distributed Version Control System (DVCS).
Code didistribusikan dengan cara semua developer memiliki salinan code beserta dengan semua history dari code tersebut.
Dengan cara seperti ini, setiap developer bekerja pada salinan code masing-masing sehingga tidak terjadi konflik antara satu dengan yang lain.
Git menggunakan konsep seperti push dan merge untuk menggabungkan semua perubahan yang dibuat oleh masing-masing developer.
Branch
Branch atau cabang pada dasarnya adalah salinan dari source code yang ada di dalam repository.
Git memiliki branch utama bernama master atau main.
Kita bisa membuat branch-branch yang lain dari branch master ini.
Setiap branch bisa diibaratkan seperti ‘ruang kerja khusus’ bagi developer.
Pada proyek pengembangan aplikasi berskala kecil, biasanya developer membuat dua branch yaitu master dan development.
Branch master digunakan untuk menyimpan source code yang akan dideploy ke production environment.
Sedangkan branch development digunakan untuk semua hal yang berkaitan dengan pengembangan aplikasi. Seperti penambahan fitur, patch, bug fix dll.
Pemberian nama branch seperti development bukanlah sebuah keharusan, kita bisa membuat branch baru dari branch master dengan nama apa saja.
Tujuan dari pemberian nama development adalah untuk mewakili apa yang sedang dikerjakan pada branch tersebut.
Semakin berkembang project, semakin banyak branch yang dibuat.
Beberapa developer terkadang membuat branch untuk masing-masing tujuan dibuatnya branch tersebut, seperti:
- Development, untuk pengembangan secara umum
- Test, untuk pengujian
- Feature, untuk pengembangan feature baru
- Bug fix, khusus untuk mencari dan mengatasi bug
- Hot fix, untuk mengembangkan solusi yang bersifat sementara
- dll
The 3 Tree
Selain branch, kita perlu memahami The 3 Tree.
Tiga ‘tree’ ini merupakan komponen utama dalam arsitektur Git.
- HEAD
Commit terakhir pada suatu branch aktif.
- Index
Adalah daftar dari commit yang akan dilakukan, terkadang disebut sebagai staging area.
- Working Directory
Tempat dimana semua perubahan terjadi.
Workflow:
Semua proses yang terjadi di Git tidak lepas dari 3 tree ini.
Konsep ini akan lebih mudah dipahami ketika kita bahas operasi dan perintah-perintah dasar yang sering digunakan dalam git.
Install Git
Git dapat digunakan di semua sistem operasi.
- Windows
Download git dari git-scm kemudian ikuti petunjuk instalasi.
Untuk mempermudah instalasi pilih semua opsi default.
2. Linux / Ubuntu / Debian
Jalankan perintah berikut pada terminal/shell untuk menginstall git:
$ sudo apt-get update
$ sudo apt-get install git
Untuk memeriksa apakah git berhasil diinstall eksekusi perintah berikut:
$ git --version
Selanjutnya konfigurasi username dan email:
$ git config --global user.name "brachio"
$ git config --global user.email "brachio@devsaurus.com"
Ganti brachio dan brachio@devsaurus.com dengan username dan email yang diinginkan.
3. Mac OS
Kita bisa install git menggunakan Homebrew atau download installer dari git-scm
Homebrew
$ brew install git
Gunakan perintah yang sama untuk melihat jika git berhasil diinstall:
$ git --version
Kemudian konfigurasi dengan langkah yang sama:
$ git config --global user.name "brachio"
$ git config --global user.email "brachio@devsaurus.com"
Operasi dan Perintah Dasar pada Git
Operasi dan perintah-perintah yang dibahas adalah yang paling sering digunakan.
1. Membuat Git Repository
Gunakan perintah berikut ini untuk membuat sebuah git repository:
$ git init
Git repository bisa dibuat di awal atau kita bisa mengubah project yang sudah ada menjadi git repository.
Perintah ini akan membuat folder .git di dalam folder project.
2. Memeriksa status repository
Untuk memeriksa status dari repository kita gunakan perintah git status
.
3. Membuat branch baru
Jika kita ingin membuat sebuah branch baru dari branch master kita bisa gunakan perintah berikut ini:
git checkout -b <nama branch baru>
contoh:
git checkout -b development
Perintah diatas akan membuat sebuah branch baru bernama development sekaligus berpindah dari branch master ke branch development.
Bagaimana jika kita ingin membuat branch baru selain dari branch master?
Kita bisa gunakan perintah berikut ini:
git checkout -b bugfix development
Dengan perintah diatas kita membuat branch baru bernama bugfix dari branch development.
4. Menyimpan revisi
Setiap file di dalam repository memiliki 4 lifecycle status.
- Untracked
file belum masuk dalam pantuan git, setiap revisi yang terjadi pada file git tidak mengetahuinya. - Unmodified
tidak ada revisi terjadi, tapi sudah dalam pantuan git. - Modified
revisi terjadi, dan git mengetahuinya - Staged
file siap untuk proses commit.
Kita buat sebuah file bernama README.md berisi text Hello Brachio.
Pada terminal eksekusi perintah berikut:
$ echo "Hello Brachio" > README.md
Sekarang kita lihat status dari file README.md
Status dari file README.md adalah Untracked.
Selanjutnya kita eksekusi perintah git add <file>
yang akan mengubah status file dari untracked ke staged, jadi git dapat memantau setiap revisi yang terjadi.
$ git add README.md
Untuk menyimpan revisi ke dalam repository kita gunakan perintah git commit
.
Kita harus menambahkan keterangan sebagai penjelasan dari setiap commit.
$ git commit -m "create README.me"
5. Membatalkan commit
Cara kerja git reset
mirip dengan git checkout
, bedanya jika git checkout
memindahkan HEAD ke commit tertentu, sedangkangit reset
akan memindahkan HEAD ke commit lain beserta dengan branch aktif.
Ada 3 opsi git reset
yang sering dipakai: --soft
, --mixed
, dan --hard
- soft
$ git reset --soft
git akan memindahkan HEAD tanpa mengubah index dan working directory, membuat status dari file menjadi staged atau Changes to be commited.
HEAD~1 berarti kita pindah HEAD satu commit ke belakang, HEAD~2 kita pindah dua commit ke belakang dst.
Selain menggunakan HEAD~1 kita juga bisa menggunakan commit hash.
Commit hash adalah identitas untuk setiap commit yang membedakan dengan commit yang lain.
Sehingga jika kita ingin reset ke commit dengan hash 80206355… seperti gambar diatas kita bisa eksekusi perintah:
$ git reset --soft 80206355
Cukup gunakan 8 karakter pertama dari commit hash.
- mixed
$ git reset --mixed
Ini adalah opsi default, jika kita tidak menentukan opsi yang dipakai, git akan menggunakan opsi --mixed
.
git akan memindahkan HEAD dengan mengubah index tapi tidak mengubah working tree, membuat status dari file menjadi Untracked.
- hard
$ git reset --hard
Ini adalah opsi yang sebenarnya kurang direkomendasikan, karena git akan memindahkan HEAD dengan mengubah index dan working tree.
Tidak hanya commit yang akan direset namun file juga akan ikut terhapus.
Hindari opsi ini kecuali setelah mengetahui semua efek yang akan ditimbulkan akibat dari penggunaaan opsi --hard
.
Revert
Selain git reset
kita juga bisa membatalkan commit dengan perintah git revert
.
Tapi git revert
tidak benar-benar membatalkan commit, melainkan akan membuat commit baru untuk membatalkan commit sebelumnya.
Contoh:
$ git revert HEAD
6. Menghapus file dari repo
Kita bisa gunakan perintah berikut untuk menghapus suatu file di repo tanpa menghapus file tersebut.
$ git rm --cached <nama file>
Status dari file akan menjadi Untracked.
Tanpa opsi --cached
maka file tidak hanya terhapus dari git namun juga dari file system/disk.
7. Menggabungkan branch
Untuk menggabungkan antara branch dimana kita bekerja dengan branch master kita gunakan perintah git merge
.
Sebagai contoh ketika kita ingin menggabungkan branch development dengan branch master kita bisa eksekusi perintah berikut:
$ git checkout master // pindah ke branch master
$ git merge development // merge branch development ke branch master
Semua langkah yang kita lakukan diatas adalah untuk local repository.
Bagaimana jika kita harus bekerja dengan repository yang berada di git provider seperti GitHub?
Sebelum melanjutkan pembahasan kita perlu membahas sedikit tentang git provider.
Git Provider
Git Hosting Service Provider atau Git Provider adalah penyedia jasa layanan hosting khusus untuk git repository.
Beberapa diantaranya:
Pada saat tulisan ini dibuat, GitHub adalah yang paling populer.
Dengan Git Provider, kita bisa mengakses git repository dari mana saja, selama ada koneksi internet.
Setiap Git provider menawarkan layanan dengan keunggulan yang berbeda-beda.
Sebagai contoh GitLab unggul dengan fitur DevOps-nya sedangkan GitHub unggul di komunitas.
Hingga tulisan ini dibuat jumlah user GitHub lebih dari 50 juta user.
Keduanya menawarkan layanan hostingnya baik private atau public secara cuma-cuma.
Pada tutorial ini kita akan gunakan GitHub.
Repository yang ada di luar komputer kita baik yang di hosting di git provider atau ada di server lain biasa disebut dengan Remote Repository.
Kita akan bahas beberapa konsep yang dipakai ketika kita bekerja dengan remote repository.
Tapi sebelumnya silahkan buat akun GitHub terlebih dahulu jika belum memilikinya.
Membuat Repository baru
Setelah membuat akun di GitHub kita bisa membuat repository baru dari menu di pojok kanan atas:
Selanjutnya buat sebuah repository baru:
Lalu kita akan mendapat halaman quick setup dari github seperti ini:
Halaman ini akan memberitahu 4 hal yang bisa kita lakukan setelah repository baru berhasil dibuat.
Clone repository
Yang dimaksud dengan clone disini adalah membuat salinan dari sebuah git repository tanpa menyalin konfigurasinya.
Perintah yang digunakan:
$ git clone <nama git repository>
contoh:
$ git clone https://github.com/devsaurus-class/myrepo
Penjelasan perintah diatas adalah kita clone repository bernama myrepo milik user github bernama devsaurus-class ke lokal komputer.
Sinkronisasi
Ada 4 bentuk sinkronisasi antara local repository dengan remote repository yang umum dilakukan.
- Membuat koneksi
Perintah yang digunakan untuk mengatur koneksi ke sebuah remote repository adalah git remote
.
Untuk membuat koneksi ke sebuah remote repository kita gunakan perintah
$ git remote add <nama repo> <url remote repo>
Menghapus koneksi
$ git remote rm <nama repository>
Melihat daftar remote repository yang terhubung dengan local repo.
$ git remote -v
- Fetching
Fetching adalah proses yang dilakukan dimana kita ingin melihat progress atau kondisi terbaru yang ada di remote repository.
Perintah yang digunakan adalah git fetch
.
git fetch
akan mendownload commit, file yang ada di remote repository ke local repository.
Bisa jadi commit atau file tersebut berasal dari developer lain yang juga bekerja pada repository yang sama.
Dengan git fetch
kita bisa membandingkan commit pada remote repository dengan commit yang ada pada local repository.
- Pull
Perintah git pull
juga melakukan proses fetching, bedanya git pull
akan langsung mengupdate local repository agar sama dengan remote repository.
Tapi perlu diperhatikan git pull
bisa menimbulkan konflik.
Karena commit yang kita download mungkin adalah update untuk file yang sama dengan yang kita update di local repository.
- Push
Kebalikan dari git pull
, perintah git push
kita gunakan untuk mengirimkan atau upload commit yang ada di local repository ke remote repository.
Setelah git push
, remote repository akan sama dengan local repository (tergantung branch).
git fetch
, git pull
, dan git push
adalah perintah yang sering digunakan secara bersamaan.
Sebelum menjalankan git push
seorang developer perlu memeriksa kondisi dari remote repository dengan git fetch
, jika ada commit yang perlu didownload dan diupdate maka developer akan mengeksekusi perintahgit pull
.
Beberapa istilah berikut ini tidak berasal dari git, namun dari git provider dan perlu untuk diketahui.
Pull Request
Pull Request adalah istilah yang dipakai untuk fitur kolaborasi yang disediakan git provider dimana seorang developer memberi tahu orang lain biasanya owner atau maintainer dari remote repository tentang perubahan yang sudah dilakukan.
Pull request ini menjadi tempat untuk berdiskusi dan review perubahan yang sudah dilakukan, yang selanjutnya owner atau maintainer dari repository dapat menyetujui atau menolak perubahan tersebut.
Fitur pull request ini bisa kita temukan di git provider seperti github dan bitbucket, sedangkan gitlab menyebut fitur ini sebagai merge request.
Fork
Fork sama dengan clone, tapi bedanya salinan dari repository masih tetap ada di github dan tidak didownload ke lokal komputer.
Menyelesaikan konflik
Ketika kita berkolaborasi dalam sebuah team, konflik terutama dalam proses merge atau push mungkin akan terjadi.
Pada umumnya konflik ini terjadi ketika dua developer melakukan perubahan pada baris code yang sama.
Beberapa perintah yang bisa digunakan dalam proses menyelesaikan konflik yang terjadi adalah:
$ git status
Untuk melihat status dari repository dibandingkan dengan remote repository.
$ git diff
Untuk melihat semua perubahan yang terjadi antara commit dan working tree (folder dimana git repository berada).
Kemudian setelah kita mengetahui perubahan yang menyebabkan konflik kita harus memilih versi perubahan mana yang akan dipakai.
Git Software
Untuk mempermudah penggunaan git, ada beberapa Git software yang bisa kita gunakan.
Jika menggunakan Code Editor seperti Visual Studio Code, kita bisa memanfaatkan menu Source Control untuk mengelola git atau kita bisa install ekstensi khusus untuk Git seperti GitLens.
Kesimpulan
Git adalah Version Control System yang paling banyak digunakan oleh developer saat ini. Dengan berbagai fitur yang dimiliki, git lebih unggul dibanding dengan version control system yang lain.
Namun dalam menggunakannya kita perlu belajar dan memahami konsep-konsep yang dipakai didalamnya.
Operasi dan perintah yang akan sering dipakai:
- Membuat repository, dengan perintah
git init
atau menggunakan git provider seperti GitHub - Clone repository dengan perintah
git clone
- Menambahkan file ke local repo dengan perintah
git add
- Menyimpan revisi pada file dengan perintah
git commit
- Membatalkan commit dengan perintah
git reset
ataugit revert
- Membuat branch dengan perintah
git checkout -b
- Menggabungkan dua branch dengan perintah
git merge
- Melihat status dari working directory dengan perintah
git status
- Mengatur koneksi ke remote repository dengan perintah
git remote
- Download commit dan update local repository dengan perintah
git fetch
dangit pull
- Upload / transfer commit dengan perintah
git push
Untuk mempermudah penggunaan git kita bisa gunakan git software seperti GitHub Desktop, SourceTree atau ekstensi GitLens pada VS Code.
Semoga Tutorial ini dapat membantu.
Jangan lupa untuk clap jika tutorial ini bermanfaat. Terima kasih.
Download full chapter eBook Full Stack Gate, kumpulan materi pendahuluan untuk memulai karir sebagai Full Stack Web Developer disini.