Membaca Pesan Errornya

Ketika kamu pertama kali menggunakan Git di sebuah mesin baru, atau setelah melakukan instalasi fresh, kamu mungkin akan dihadapkan pada pesan error yang cukup membingungkan. Pesan error lengkapnya biasanya terlihat seperti ini:

Committing is not possible because you have unmerged files.

Bukan itu. Pesan error yang sebenarnya adalah:

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'user@hostname.(none)')

Pesan ini muncul ketika kamu mencoba melakukan git commit tanpa memiliki identitas yang terkonfigurasi sebelumnya. Dalam bahasa Indonesia sederhana, Git sedang berkata: "Saya tidak tahu siapa kamu. Sebelum kamu bisa membuat commit, kamu harus memberitahu saya nama dan email kamu." Git memerlukan informasi ini karena setiap commit harus tercatat siapa pembuatnya — ini adalah fondasi dari sistem versioning. Tanpa identitas, Git menolak untuk melanjutkan proses commit dan menghentikan operasi dengan status fatal.

Mengapa error ini muncul? Jawabannya cukup straightforward: Git tidak memiliki mekanisme yang bisa menebak siapa kamu. Berbeda dengan aplikasi lain yang mungkin memiliki layar login, Git adalah tool command-line yang desainnya minimalis. Ia mengandalkan konfigurasi teks untuk mengetahui identitas user. Ketika konfigurasi tersebut tidak ada — baik di level global maupun level repository — maka Git tidak memiliki cara untuk menentukan siapa author dari commit yang sedang dibuat. terus, Git juga mencoba melakukan auto-detect berdasarkan hostname mesin kamu, tetapi seperti yang terlihat di baris terakhir error (got 'user@hostname.(none)'), pendekatan ini sering gagal dan menghasilkan output yang tidak valid.

Kenapa Ini Terjadi

Ada beberapa root cause yang bisa memicu munculnya error ini. Berikut adalah penyebab-penyebab yang paling sering terjadi, diurutkan dari yang paling umum:

  • Git belum dikonfigurasi sama sekali setelah instalasi. Ini adalah penyebab paling dominan, terutama bagi pengguna yang baru menginstal Git di komputer baru. Setelah proses instalasi, Git tidak secara otomatis mengatur identitas user. Kamu perlu secara manual menjalankan perintah konfigurasi. Banyak pengguna yang langsung melakukan clone dan commit tanpa menyadari bahwa langkah konfigurasi identitas terlewat.

  • Konfigurasi hanya diset di repository tertentu, tetapi kamu bekerja di repository lain. Kamu mungkin sudah menjalankan git config user.name tanpa flag --global di satu repository, sehingga konfigurasi tersebut hanya berlaku lokal. Ketika kamu pindah ke repository baru atau membuat repository baru, identitas tersebut tidak terbawa.

  • File .gitconfig terhapus atau rusak. File konfigurasi global Git, yang biasanya berada di ~/.gitconfig (Linux/macOS) atau C:\Users\Username\.gitconfig (Windows), bisa saja terhapus secara tidak sengaja atau terkorupsi. Tanpa file ini, semua konfigurasi global termasuk identitas user akan hilang.

  • Environment variable GIT_AUTHOR_NAME atau GIT_AUTHOR_EMAIL ter-overwrite dengan nilai kosong. Dalam beberapa kasus, terutama di environment CI/CD, variabel lingkungan bisa meng-override konfigurasi Git. Jika variabel tersebut diset ke string kosong, Git akan gagal mendeteksi identitas.

  • Penggunaan tool pihak ketiga yang menghapus atau mengabaikan konfigurasi Git. Beberapa GUI client atau wrapper script mungkin menjalankan Git dalam environment yang terisolasi, di mana konfigurasi global tidak di-load.

Untuk memastikan penyebab mana yang sedang kamu alami, langkah pertama adalah memeriksa apakah konfigurasi identitas sudah ada. Jalankan perintah berikut:

git config --global user.name
git config --global user.email

Jika kedua perintah tersebut mengembalikan output kosong (tidak ada teks sama sekali), maka penyebabnya adalah nomor satu: Git belum dikonfigurasi. Jika output ada tetapi kamu masih mendapat error, cek apakah kamu berada di repository yang berbeda dengan tempat kamu melakukan konfigurasi, atau periksa apakah ada environment variable yang mengganggu:

echo $GIT_AUTHOR_NAME
echo $GIT_AUTHOR_EMAIL

Memperbaikinya Langkah demi Langkah

Mari kita selesaikan error ini secara sistematis. Ikuti langkah-langkah berikut:

Langkah 1: Set identitas global

Jalankan kedua perintah ini di terminal, ganti dengan nama dan email kamu yang sebenarnya:

git config --global user.name "Nama Kamu"
git config --global user.email "emailkamu@contoh.com"

Output yang diharapkan: tidak ada output sama sekali. Perintah git config berhasil dijalankan secara senyap (silent), yang berarti konfigurasi telah tersimpan. Jika muncul error seperti error: could not lock config file, maka ada masalah dengan permission file .gitconfig.

Langkah 2: Verifikasi konfigurasi

Pastikan konfigurasi sudah tersimpan dengan benar:

git config --global user.name
# Output: Nama Kamu

git config --global user.email
# Output: emailkamu@contoh.com

Jika output sesuai dengan yang kamu masukkan, konfigurasi sudah berhasil.

Langkah 3: Ulangi commit yang gagal

Sekarang coba lakukan commit yang sebelumnya gagal:

git commit -m "Initial commit"

Output yang diharapkan:

[master (root-commit) a1b2c3d] Initial commit
 2 files changed, 15 insertions(+)

Jika commit berhasil tanpa error, maka solusi sudah bekerja. Namun perlu diingat, solusi di atas adalah solusi langsung yang menyelesaikan masalah segera. Untuk memastikan masalah ini tidak muncul kembali di masa depan, kita perlu memahami root cause dan melakukan fix permanen.

Alternatif: Set identitas hanya untuk repository tertentu

Jika kamu ingin menggunakan identitas yang berbeda untuk repository tertentu (misalnya, email kantor untuk repo kerja dan email pribadi untuk repo personal), hilangkan flag --global:

cd /path/to/your/repo
git config user.name "Nama Kerja"
git config user.email "email.kantor@perusahaan.com"

Perintah ini akan menyimpan konfigurasi di file .git/config di dalam repository tersebut saja, tanpa mempengaruhi repository lain.

Solusi Jangka Panjang

Solusi git config --global di atas sebenarnya sudah cukup permanen untuk kebanyakan kasus, tetapi ada beberapa langkah tambahan yang bisa memastikan error ini tidak pernah muncul lagi dan konfigurasi kamu tetap konsisten di seluruh environment.

Periksa dan validasi file .gitconfig secara langsung

File konfigurasi global Git bisa diverifikasi secara manual. Lokasinya berbeda-beda tergantung sistem operasi:

  • Linux/macOS: ~/.gitconfig
  • Windows: C:\Users\<Username>\.gitconfig

Buka file tersebut dan pastikan ada section [user]:

[user]
    name = Nama Kamu
    email = emailkamu@contoh.com

Jika section ini ada dan berisi nilai yang valid, konfigurasi sudah permanen tersimpan. Kamu juga bisa memverifikasi seluruh konfigurasi Git yang aktif dengan:

git config --list --show-origin

Perintah ini akan menampilkan semua konfigurasi Git beserta sumber filenya, sehingga kamu bisa melihat apakah konfigurasi datang dari file global, file lokal repository, atau environment variable.

Best practice: Gunakan identitas yang konsisten dengan akun remote

Penting untuk memastikan bahwa email yang kamu konfigurasi di Git lokal sama dengan email yang terdaftar di GitHub, GitLab, atau platform remote lainnya. Jika email tidak cocok, commit kamu tidak akan terhubung ke profil akun remote, sehingga kontribusi tidak terhitung. Misalnya, jika akun GitHub kamu menggunakan emailkamu@contoh.com, maka gunakan email yang sama di konfigurasi Git:

git config --global user.email "emailkamu@contoh.com"

Menangani_multiple akun di satu mesin

Bagi developer yang menggunakan komputer yang sama untuk proyek kantor dan proyek pribadi, best practice-nya adalah menggunakan fitur includeIf di Git. Buat konfigurasi yang berbeda berdasarkan direktori:

Di ~/.gitconfig:

[user]
    name = Nama Pribadi
    email = email.pribadi@contoh.com

[includeIf "gitdir:~/kantor/"]
    path = ~/kantor/.gitconfig-kantor

Buat file ~/kantor/.gitconfig-kantor:

[user]
    email = email.kantor@perusahaan.com

Dengan konfigurasi ini, semua repository di bawah direktori ~/kantor/ akan otomatis menggunakan email kantor, sementara repository lain menggunakan email pribadi. Ini adalah fix permanen yang elegan untuk skenario multi-akun.

Perbedaan antar sistem operasi

Di Windows, Git bisa dikonfigurasi melalui Git Bash, Command Prompt, atau PowerShell — semuanya menghasilkan hasil yang sama karena mengacu pada file .gitconfig yang sama. Namun, di Windows terkadang muncul masalah di mana file konfigurasi berada di path yang tidak terduga karena variabel HOME belum diset dengan benar. Untuk memastikan, jalankan:

# Di Git Bash (Windows)
echo $HOME
# Output seharusnya: /c/Users/Username

Di macOS, setelah update sistem besar (major update), file .gitconfig biasanya tetap aman karena berada di home directory yang tidak terpengaruh. Namun, jika kamu menggunakan Homebrew dan melakukan reinstall, pastikan Git yang digunakan masih merujuk ke konfigurasi yang sama.

Langkah Lanjutan

Jika semua solusi di atas sudah kamu coba tetapi error masih muncul, ada beberapa kemungkinan yang perlu diselidiki lebih lanjut.

Konfigurasi sudah benar tapi commit tetap gagal

Kadang, konfigurasi sudah terlihat benar ketika dicek dengan git config --global user.name, tetapi commit tetap gagal. Ini bisa terjadi karena adanya override dari environment variable. Periksa apakah ada variabel lingkungan yang mengganggu:

env | grep GIT_

Jika ada output seperti GIT_AUTHOR_NAME= atau GIT_AUTHOR_EMAIL= dengan nilai kosong, kamu perlu menghapus variabel tersebut. Di Linux/macOS:

unset GIT_AUTHOR_NAME
unset GIT_AUTHOR_EMAIL
unset GIT_COMMITTER_NAME
unset GIT_COMMITTER_EMAIL

Untuk memastikan variabel-variabel ini tidak kembali muncul, periksa file shell profile kamu (~/.bashrc, ~/.zshrc, ~/.bash_profile) dan hapus atau perbaiki baris yang men-set variabel tersebut.

Git masih tidak bisa auto-detect setelah konfigurasi

Dalam kasus yang sangat jarang, konfigurasi mungkin tersimpan di file yang berbeda dari yang Git baca. Gunakan perintah verbose untuk melihat dari mana Git membaca konfigurasi:

git config --list --show-origin | grep user

Output akan menunjukkan path file yang menjadi sumber konfigurasi. Jika ternyata ada konfigurasi yang saling bertentangan dari file yang berbeda (misalnya, konfigurasi di /etc/gitconfig meng-override konfigurasi di ~/.gitconfig), kamu perlu menyelesaikan konflik tersebut. File di /etc/gitconfig adalah konfigurasi system-wide yang berlaku untuk semua user di mesin tersebut, dan biasanya memerlukan akses root untuk diubah.

Cara membaca log untuk diagnosis lebih lanjut

Git menyediakan mekanisme tracing yang bisa membantu mengidentifikasi masalah konfigurasi