Bagaimana pengembang inti Git mengatur dan menggunakan Git?
(blog.gitbutler.com)- Scott Chacon, penulis "Pro Git", menjelaskan beberapa pengaturan Git yang ia aktifkan secara global beserta alasannya
- Banyak dari pengaturan ini sebenarnya dipelajari dari para pengembang yang mengerjakan codebase inti Git
- Berikut adalah pengaturan
~/.gitconfigyang membuat Git menjadi lebih baik[column] ui = auto [branch] sort = -committerdate [tag] sort = version:refname [init] defaultBranch = main [diff] algorithm = histogram colorMoved = plain mnemonicPrefix = true renames = true [push] default = simple autoSetupRemote = true followTags = true [fetch] prune = true pruneTags = true all = true # Kenapa tidak dipakai? [help] autocorrect = prompt [commit] verbose = true [rerere] enabled = true autoupdate = true [core] excludesfile = ~/.gitignore [rebase] autoSquash = true autoStash = true updateRefs = true # Pengaturan sesuai selera pribadi (hapus komentar dan gunakan bila perlu) [core] # fsmonitor = true # untrackedCache = true [merge] # (jika versi Git di bawah 2.3, gunakan `diff3`) # conflictstyle = zdiff3 [pull] # rebase = true
Bagaimana para pengembang inti Git mengatur Git?
- Di mailing list Git, Felipe Contreras pernah menyarankan tim inti untuk menghapus semua konfigurasi dan alias lalu mencoba memakai Git bawaan
- Dari eksperimen ini, 9 pengaturan dan 3 alias diusulkan sebagai nilai bawaan baru
merge.conflictstyle = zdiff3 rebase.autosquash = true rebase.autostash = true commit.verbose = true diff.colorMoved = true diff.algorithm = histogram grep.patternType = perl feature.experimental = true branch.sort = committerdate - Pengaturan ini belum diadopsi sebagai nilai bawaan
- Namun, menarik bahwa banyak pengembang Git merasa sulit menggunakan Git tanpa mengaktifkan sebagian dari pengaturan ini
- Yang lebih menarik lagi, kebanyakan dari kalian mungkin sama sekali tidak tahu apa arti semua ini
- Penjelasannya akan dibagi ke dalam tiga kategori
- Hal yang jelas membuat Git lebih baik (Clearly Makes Git Better)
- Kenapa tidak dipakai? (Why the Hell Not?)
- Masalah selera (A Matter of Taste)
# Hal yang jelas membuat Git lebih baik
Mengurutkan daftar branch
- Secara bawaan Git mengurutkan branch berdasarkan alfabet, tetapi mengurutkannya berdasarkan tanggal commit terbaru bisa lebih berguna
- Dengan pengaturan berikut, branch akan diurutkan berdasarkan commit terbaru dan ditampilkan dalam format kolom
git config --global column.ui auto git config --global branch.sort -committerdate
Mengurutkan daftar tag
- Untuk mengurutkan tag berdasarkan versi, bukan alfabet, gunakan pengaturan berikut
git config --global tag.sort version:refname
Menetapkan nama branch bawaan
- Untuk menetapkan nama branch bawaan saat menginisialisasi repositori baru, gunakan pengaturan berikut
git config --global init.defaultBranch main
Pengaturan diff yang lebih baik
- Ubah algoritma diff bawaan menjadi
histogramuntuk menghasilkan perbandingan yang lebih akurat - Untuk mendeteksi perpindahan kode dan menampilkannya dengan warna, tambahkan pengaturan berikut
git config --global diff.algorithm histogram git config --global diff.colorMoved plain git config --global diff.mnemonicPrefix true git config --global diff.renames true
Pengaturan push yang lebih baik
- Pengaturan berikut dapat meningkatkan perilaku push
git config --global push.default simple git config --global push.autoSetupRemote true git config --global push.followTags true
Pengaturan fetch yang lebih baik
- Untuk menghapus branch dan tag yang tidak diperlukan secara otomatis saat fetch, gunakan pengaturan berikut
git config --global fetch.prune true git config --global fetch.pruneTags true git config --global fetch.all true
# Kenapa tidak dipakai?
Prompt koreksi otomatis
- Untuk mendeteksi typo saat mengetik perintah dan menampilkan saran, gunakan pengaturan berikut
git config --global help.autocorrect prompt
Diff saat commit
- Untuk menampilkan isi perubahan saat menulis pesan commit, tambahkan pengaturan berikut
git config --global commit.verbose true
Menggunakan ulang penyelesaian konflik
- Untuk secara otomatis menggunakan ulang penyelesaian konflik sebelumnya, gunakan pengaturan berikut
git config --global rerere.enabled true git config --global rerere.autoupdate true
Menetapkan file .gitignore global
- Untuk menentukan file yang akan diabaikan secara global, atur seperti berikut
git config --global core.excludesfile ~/.gitignore
Meningkatkan pengaturan rebase
- Untuk melakukan squash dan stash secara otomatis saat rebase, gunakan pengaturan berikut
git config --global rebase.autoSquash true git config --global rebase.autoStash true git config --global rebase.updateRefs true
# Masalah selera
Tampilan konflik merge yang lebih baik
- Untuk juga menampilkan versi dasar saat terjadi konflik merge, pertimbangkan pengaturan berikut
git config --global merge.conflictstyle zdiff3
Menggunakan rebase saat pull
- Untuk menjalankan rebase secara otomatis saat
git pull, atur seperti berikutgit config --global pull.rebase true
Meningkatkan kecepatan deteksi perubahan file
- Untuk meningkatkan performa
git statusdan sejenisnya, Anda dapat menggunakan pengaturan berikutgit config --global core.fsmonitor true git config --global core.untrackedCache true
# Penutup
- Dengan pengaturan ini, Git bisa digunakan dengan lebih nyaman, dan sebagian di antaranya juga aktif dipakai oleh pengembang inti
- Dengan mengoptimalkan pengaturan Git, alur kerja dapat ditingkatkan dan Git bisa digunakan dengan lebih efisien
7 komentar
"Yang lebih menarik adalah kenyataan bahwa sebagian besar dari kalian sama sekali tidak tahu arti ini" — nyelekit banget. serem banget
Bukan
--global, melainkan-global?Yang benar adalah
--global. Ada kekeliruan saat copy-paste. Sudah diperbaiki.Opsi konfigurasi Git yang populer
Bagus juga fitur penggunaan ulang penyelesaian konflik.
Saat melakukan diff, saya memakai git-delta untuk melihatnya dalam format TUI.
Kalau malas mengutak-atik ini itu, pakai tig juga.... hahaha
Ada yang lebih bagus mungkin...?
Komentar Hacker News
git out. Ini menampilkan semua commit yang belum di-push. Saya memakainya terusunverifiedbisa hilang dari commitgit config --global core.pager bat