app logoSearch

Explorer

  • Home Page
Ctrl+Btoggle sidebar
  1. Home
  2. 02 reference notes
  3. topics
  4. git

Git

Pendahuluan

Git adalah salah satu sistem kontrol versi terpopuler yang banyak digunakan oleh developer untuk mengelola kode. Dengan Git, pengguna bisa melacak perubahan pada proyek, berkolaborasi dengan tim, serta mencegah kesalahan yang bisa terjadi dalam pengembangan software. Catatan ini akan membahas langkah-langkah dasar hingga teknik lanjutan dalam menggunakan Git.

Pembahasan

Instalasi Git

Berikut adalah cara install Git di beberapa distribusi Linux:

$ sudo apt install git     # Ubuntu / Debian
$ sudo dnf install git     # Fedora
$ sudo pacman -S git       # Arch Linux

Konfigurasi Dasar

Setelah menginstall Git, lakukan konfigurasi awal untuk mengatur informasi pengguna seperti username dan email, serta beberapa konfigurasi penting lainnya.

Mengatur Username dan Email Secara Global

$ git config --global user.name "Rahmat Ardiansyah"
$ git config --global user.email "artsbymat@gmail.com"

Mengatur di Repository Tertentu

$ git config user.name "Rahmat Ardiansyah"
$ git config user.email "rahmatardiansyah147@gmail.com"
$ git commit --author="Rahmat Ardiansyah <rahmatardiansyah147@gmail.com">" # Akan menimpa pada commit berikutnya

Mengatur Default Editor

Untuk menggunakan [[Neovim]] sebagai editor saat membuat commit message:

$ git config --global core.editor "nvim"

Mengatur Default Nama Branch

$ git config --global init.defaultBranch main
Tips

Cek semua konfigurasi:

$ git config --list --show-origin

Workflow Dasar Git

Membuat Repository Baru

$ git init
$ git remote add origin git@github.com:username/repo.git

Menambahkan File dan Commit

$ git add . $ git commit -m "Initial commit"

Mendorong Perubahan ke Remote

$ git push -u origin main

Menarik Update dari Remote

$ git pull origin main
Tips

Gunakan --rebase untuk menghindari merge commit yang tidak perlu:

$ git pull --rebase origin main

Branching dan Merging

Membuat dan Pindah Branch

$ git branch feat-login
$ git checkout feat-login
$ # atau
$ git checkout -b feat-login

Menggabungkan Branch

$ git checkout main
$ git merge feat-login

Menghapus Branch

$ git branch -d feat-login
$ # paksa hapus
$ git branch -D feat-login

Mengganti Nama Branch

$ git branch -m oldname newname
Info

-m adalah perintah untuk move atau mengubah nama branch.

Git Lanjutan (Advance)

Git menyediakan banyak fitur untuk membantu developer dalam mengelola berbagai skenario proyek. Berikut adalah beberapa fitur yang bisa pengguna manfaatkan.

Git Worktree

Git Worktree adalah fitur yang memungkinkan kita bekerja di beberapa cabang sekaligus pada satu repository.

Clone Repository dengan Git Worktree
$ git clone --bare git@github.com:artsbymat/blog.git
Menambahkan Worktree
$ git worktree add feat
Checkout ke Commit Lama Menggunakan Worktree
$ git worktree add old
$ cd old
$ git checkout a2cf53b
Menghapus Worktree
$ git worktree remove feat

Untuk menghapus worktree yang belum di-commit:

$ git worktree remove feat --force

Menghapus branch:

$ git branch -D feat

Git Stash

Untuk menyimpan perubahan sementara tanpa commit:

$ git stash
$ git stash list
$ git stash apply
$ git stash drop

Git Log dan Diff

Melihat riwayat perubahan:

$ git log --oneline --graph --decorate
$ git diff                # lihat perubahan belum di-stage
$ git diff --staged       # lihat perubahan yang sudah di-stage
$ git log -p -- file.js   # lihat diff per commit di satu file

Git Clean

Menghapus file/folder yang belum dilacak (Untracked):

$ git clean -f -d

Git Restore dan Reset

Mengembalikan File

$ git restore file.txt          # ke versi terakhir di HEAD
$ git restore --staged file.txt # batalkan stage

Menghapus Commit Terakhir

$ git reset HEAD~1              # soft reset, simpan perubahan di working dir
$ git reset --hard HEAD~1       # hard re[[#Pembahasan]]set, hapus perubahan

Contoh Kasus pada Git

1. Commit di Branch yang Salah

Jika kita terlanjur melakukan commit di branch yang salah, berikut cara mengatasinya:

$ git reset HEAD~1

2. Git Pull dengan Rebase

Jika ada commit baru di repository GitHub, namun kita sudah memiliki 2 commit terbaru di repository lokal, gunakan --rebase untuk menggabungkan commit dari GitHub ke local tanpa merge conflict:

$ git pull --rebase origin main
Notes Bn4WtBQ.png
Info
  • Kotak merah: commit baru dari GitHub.
  • Kotak hijau: commit baru dari repository lokal.

3. Mengganti URL Git Remote Repository

Jika kita ingin mengganti URL repository remote:

$ git remote -v # Melihat remote yang tersedia
$ git remote set-url origin new.git.url/here # (Format)
$ git remote set-url origin git@github.com:rahmatardiansyah/brain-hub.git # Contoh

4. Melihat text yang berubah pada file tertentu tapi tidak tau commit yang mana

$ git log -p -- file.js

Dengan command diatas akan menampilkan semua diff commit pada file 'file.js' (seperti menggunakan less).

5. Menghapus folder dari git repository

Untuk menghapus folder dari git repository tanpa menghapus folder tersebut dari working directory (filesystem lokal), bisa menggunakan perintah git rm --cached. Ini akan menghapus folder dari tracking Git, tapi tidak menghapus file/folder secara fisik dari komputer.

Langkah-langkah:

Misalnya kita ingin menghapus folder bernama contoh-folder dari Git:

git rm -r --cached contoh-folder

Penjelasan:

  • -r: menghapus secara rekursif (untuk folder).
  • --cached: hanya menghapus dari index Git (bukan dari disk lokal).

Setelah itu:

  1. Tambahkan folder tersebut ke .gitignore agar tidak dilacak lagi setetelahnya:
  2. Commit perubahan: git commit -m "Remove folder from Git tracking"

6. Abaikan file atau folder tapi tidak di gitignore

Agar Git mengabaikan perubahan lokal1:

$ git update-index --assume-unchanged <file>

Atau tambahkan ke .git/info/exclude untuk mengabaikan perubahan lokal pada file tertentu tanpa mengubah .gitignore global.

$ echo "public/search.json" >> .git/info/exclude

Tips Lainnya

Untuk manajemen Git yang lebih efisien, kita bisa menggunakan tools seperti [[Lazygit]] untuk antarmuka yang lebih intuitif.

Gunakan teknik Git Cherry Pick untuk mengambil commit tertentu di branch lain.

Footnotes

  1. https://practicalgit.com/blog/make-git-ignore-local-changes-to-tracked-files.html https://stackoverflow.com/a/1753078 ↩

Graph Not Found

Table of Content

  • Pendahuluan
  • Pembahasan
    • Instalasi Git
    • Konfigurasi Dasar
      • Mengatur _Username_ dan _Email_ Secara Global
      • Mengatur di Repository Tertentu
      • Mengatur Default Editor
      • Mengatur Default Nama Branch
    • Workflow Dasar Git
      • Membuat Repository Baru
      • Menambahkan File dan Commit
      • Mendorong Perubahan ke Remote
      • Menarik Update dari Remote
    • Branching dan Merging
      • Membuat dan Pindah Branch
      • Menggabungkan Branch
      • Menghapus Branch
      • Mengganti Nama Branch
    • Git Lanjutan (Advance)
      • Git Worktree
      • Git Stash
      • Git Log dan Diff
      • Git Clean
      • Git Restore dan Reset
      • Menghapus Commit Terakhir
    • Contoh Kasus pada Git
      • 1. Commit di Branch yang Salah
      • 2. Git Pull dengan Rebase
      • 3. Mengganti URL Git Remote Repository
      • 4. Melihat text yang berubah pada file tertentu tapi tidak tau commit yang mana
      • 5. Menghapus folder dari git repository
      • 6. Abaikan file atau folder tapi tidak di gitignore
    • Tips Lainnya
Ctrl+Vtoggle sidebar