Git
Perintah Git yang paling sering dibutuhkan, dengan penekanan pada operasi yang mudah lupa: membatalkan perubahan, memperbaiki commit, dan menelusuri riwayat.
00
Konfigurasi dan Memulai
Pengaturan awal identitas dan inisialisasi repositori.
Identitas dan preferensi dasar
git
git config --global user.name "Nama Anda" git config --global user.email "anda@contoh.com" git config --global init.defaultBranch main git config --global pull.rebase true # pull dengan rebase, riwayat lebih bersih git config --list
Membuat atau menyalin repositori
git
git init # inisialisasi repo baru git clone <url> # salin repo remote git clone --depth 1 <url> # salin dangkal (riwayat terbaru saja)
01
Perubahan Harian
Siklus inti: memeriksa status, men-stage, dan meng-commit.
Status, stage, commit
git
git status -sb # ringkas + info branch git add file.ts # stage satu file git add -p # stage per potongan (interaktif) git add -A # stage semua perubahan git commit -m "feat: pesan singkat" git commit --amend # ubah commit terakhir (sebelum push)
Melihat perbedaan
git
git diff # perubahan belum di-stage git diff --staged # perubahan yang sudah di-stage git diff main..fitur # antar branch git diff --stat # ringkasan per file
02
Branch dan Merge
Mengelola branch
git switch dan git restore adalah perintah modern yang memisahkan tugas git checkout yang dahulu kelebihan beban.git
git branch # daftar branch lokal git switch -c fitur/login # buat dan pindah ke branch baru git switch main # pindah branch git branch -d fitur/login # hapus branch yang sudah di-merge git branch -D fitur/login # paksa hapus
Menggabungkan perubahan
Hindari rebase pada branch yang sudah dibagikan ke orang lain, karena menulis ulang riwayat bersama dapat menyulitkan kolaborator.
git
git merge fitur/login # gabungkan ke branch saat ini git merge --no-ff fitur/login # selalu buat commit merge git rebase main # tata ulang commit di atas main git rebase -i HEAD~3 # rebase interaktif 3 commit terakhir
03
Remote dan Sinkronisasi
Mengambil dan mengirim
git
git remote -v # daftar remote git fetch origin # ambil tanpa merge git pull # ambil dan gabungkan git push # kirim ke remote git push -u origin fitur/login # set upstream saat push pertama
Push paksa yang lebih aman
Gunakan
--force-with-lease, bukan --force. Opsi ini menolak menimpa jika ada perubahan remote yang belum Anda lihat, sehingga mencegah menghapus pekerjaan orang lain.git
git push --force-with-lease
04
Membatalkan dan Memperbaiki
Bagian yang paling sering dicari ulang. Pahami perbedaan reset, revert, dan restore.
Mengurungkan perubahan
reset --hard membuang perubahan secara permanen. revert aman untuk riwayat publik karena membuat commit baru yang membatalkan, bukan menghapus.git
git restore file.ts # buang perubahan kerja pada file git restore --staged file.ts # batalkan stage, pertahankan perubahan git reset --soft HEAD~1 # batalkan commit, pertahankan stage git reset --mixed HEAD~1 # batalkan commit dan stage git reset --hard HEAD~1 # buang commit dan semua perubahan git revert <hash> # batalkan commit via commit baru (aman)
Menyelamatkan pekerjaan yang hilang
git reflog mencatat hampir semua perpindahan HEAD. Commit yang tampak hilang setelah reset keras biasanya masih dapat dipulihkan dari sini.git
git reflog # riwayat seluruh perpindahan HEAD git reset --hard <hash-reflog> # kembalikan ke kondisi sebelumnya git cherry-pick <hash> # ambil satu commit dari tempat lain
05
Riwayat dan Inspeksi
Menelusuri riwayat
git
git log --oneline --graph --all # grafik ringkas semua branch git log -p file.ts # riwayat beserta diff sebuah file git log --author="nama" # filter berdasar pembuat git blame file.ts # siapa mengubah baris apa git show <hash> # detail satu commit
Mencari penyebab regresi
git bisect melakukan pencarian biner pada riwayat untuk menemukan commit yang memperkenalkan bug.git
git bisect start git bisect bad # commit sekarang bermasalah git bisect good <hash-lama> # commit lama masih baik # Git akan checkout commit di tengah; uji lalu tandai good/bad git bisect reset # selesai
06
Stash dan Penyimpanan Sementara
Menyimpan pekerjaan sementara
git
git stash # simpan perubahan, bersihkan working tree
git stash -u # sertakan file untracked
git stash list # daftar stash
git stash pop # terapkan dan hapus stash teratas
git stash apply stash@{1} # terapkan stash tertentu tanpa menghapus
git stash drop stash@{0} # hapus stash tertentu