Tutorial Git (2021)

Yogiokto Agae
Devsaurus Class
Published in
11 min readNov 6, 2020

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 logo

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
Photo by Zach Reiner on Unsplash

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.

git branch master and 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.

git HEAD description
  • Index

Adalah daftar dari commit yang akan dilakukan, terkadang disebut sebagai staging area.

  • Working Directory

Tempat dimana semua perubahan terjadi.

Workflow:

workflow git
Sumber

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.

  1. 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
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.

membuat git repository

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
Membuat branch baru

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.

Membuat branch dari branch selain master

4. Menyimpan revisi

Setiap file di dalam repository memiliki 4 lifecycle status.

  1. Untracked
    file belum masuk dalam pantuan git, setiap revisi yang terjadi pada file git tidak mengetahuinya.
  2. Unmodified
    tidak ada revisi terjadi, tapi sudah dalam pantuan git.
  3. Modified
    revisi terjadi, dan git mengetahuinya
  4. Staged
    file siap untuk proses commit.
git file lifecycle
Sumber

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

git status

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
git add

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"
git commit

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.

git checkout vs git reset

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.

git HEAD~1
HEAD~1
git HEAD~2
HEAD~2

Selain menggunakan HEAD~1 kita juga bisa menggunakan commit hash.

Commit hash adalah identitas untuk setiap commit yang membedakan dengan commit yang lain.

commit hash

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.

git reset mixed
  • 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.

git revert

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.

git rm cached

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
git merge

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:

membuat repository baru

Selanjutnya buat sebuah repository baru:

membuat repository baru

Lalu kita akan mendapat halaman quick setup dari github seperti ini:

github quick setup

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.

clone repository

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
git remote
  • 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 .

git sync workflow local repository with remote repository

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:

  1. Membuat repository, dengan perintah git init atau menggunakan git provider seperti GitHub
  2. Clone repository dengan perintah git clone
  3. Menambahkan file ke local repo dengan perintah git add
  4. Menyimpan revisi pada file dengan perintah git commit
  5. Membatalkan commit dengan perintah git reset atau git revert
  6. Membuat branch dengan perintah git checkout -b
  7. Menggabungkan dua branch dengan perintah git merge
  8. Melihat status dari working directory dengan perintah git status
  9. Mengatur koneksi ke remote repository dengan perintah git remote
  10. Download commit dan update local repository dengan perintah git fetch dan git pull
  11. 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.

--

--