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 LinuxKonfigurasi 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 berikutnyaMengatur 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 mainCek semua konfigurasi:
$ git config --list --show-originWorkflow Dasar Git
Membuat Repository Baru
$ git init
$ git remote add origin git@github.com:username/repo.gitMenambahkan File dan Commit
$ git add . $ git commit -m "Initial commit"Mendorong Perubahan ke Remote
$ git push -u origin mainMenarik Update dari Remote
$ git pull origin mainGunakan --rebase untuk menghindari merge commit yang tidak perlu:
$ git pull --rebase origin mainBranching dan Merging
Membuat dan Pindah Branch
$ git branch feat-login
$ git checkout feat-login
$ # atau
$ git checkout -b feat-loginMenggabungkan Branch
$ git checkout main
$ git merge feat-loginMenghapus Branch
$ git branch -d feat-login
$ # paksa hapus
$ git branch -D feat-loginMengganti Nama Branch
$ git branch -m oldname newname-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.gitMenambahkan Worktree
$ git worktree add featCheckout ke Commit Lama Menggunakan Worktree
$ git worktree add old
$ cd old
$ git checkout a2cf53bMenghapus Worktree
$ git worktree remove featUntuk menghapus worktree yang belum di-commit:
$ git worktree remove feat --forceMenghapus branch:
$ git branch -D featGit Stash
Untuk menyimpan perubahan sementara tanpa commit:
$ git stash
$ git stash list
$ git stash apply
$ git stash dropGit 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 fileGit Clean
Menghapus file/folder yang belum dilacak (Untracked):
$ git clean -f -dGit Restore dan Reset
Mengembalikan File
$ git restore file.txt # ke versi terakhir di HEAD
$ git restore --staged file.txt # batalkan stageMenghapus Commit Terakhir
$ git reset HEAD~1 # soft reset, simpan perubahan di working dir
$ git reset --hard HEAD~1 # hard re[[#Pembahasan]]set, hapus perubahanContoh Kasus pada Git
1. Commit di Branch yang Salah
Jika kita terlanjur melakukan commit di branch yang salah, berikut cara mengatasinya:
$ git reset HEAD~12. 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
- 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 # Contoh4. Melihat text yang berubah pada file tertentu tapi tidak tau commit yang mana
$ git log -p -- file.jsDengan 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-folderPenjelasan:
-r: menghapus secara rekursif (untuk folder).--cached: hanya menghapus dari index Git (bukan dari disk lokal).
Setelah itu:
- Tambahkan folder tersebut ke
.gitignoreagar tidak dilacak lagi setetelahnya: - 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/excludeTips 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.