Menghubungkan ke Repository Git dengan Banyak Identitas
Dalam praktik sehari-hari, seorang engineer sering kali harus bekerja dengan lebih dari satu akun Git dalam satu mesin:
- Akun pribadi (open source, side project)
- Akun kantor
- Akun organisasi atau klien
Jika tidak diatur dengan benar, ini bisa menimbulkan masalah klasik:
- Commit memakai email yang salah
- Push ke repository dengan akun yang tidak seharusnya
- Error autentikasi SSH yang membingungkan
Artikel ini membahas cara yang benar, bersih, dan scalable untuk menghubungkan banyak repository Git dengan identitas yang berbeda dalam satu komputer.
Prinsip Dasar
Ada dua hal berbeda yang sering tercampur:
- Autentikasi ke Git server → SSH key
- Identitas commit →
user.namedanuser.email
Keduanya harus dipisahkan secara eksplisit.
Buat SSH Key Terpisah untuk Setiap Identitas
Jangan pernah memakai satu SSH key untuk semua akun.
Contoh:
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_ed25519_personal
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_ed25519_work
Tambahkan public key (.pub) ke akun Git yang sesuai (GitHub/GitLab/Bitbucket).
Private key tidak boleh dibagikan ke siapa pun.
Konfigurasi ~/.ssh/config
Agar SSH tahu key mana yang digunakan untuk akun tertentu, gunakan host alias.
Contoh:
# Akun pribadi
Host github-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
IdentitiesOnly yes
# Akun kerja
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
IdentitiesOnly yes
Dengan ini, SSH tidak akan menebak-nebak key mana yang dipakai.
Gunakan Host Alias di Git Remote
Agar konfigurasi SSH di atas benar-benar dipakai, remote URL harus menggunakan host alias.
Clone repository
# Repo pribadi
git clone git@github-personal:username/repo-pribadi.git
# Repo kerja
git clone git@github-work:company/repo-kerja.git
Mengubah remote yang sudah ada
git remote set-url origin git@github-work:company/repo-kerja.git
Ini adalah langkah yang paling sering terlewat.
Atur Identitas Commit Per Repository
SSH key hanya mengatur hak akses, bukan identitas commit.
Masuk ke masing-masing repository:
git config user.name "Nama Pribadi"
git config user.email "[email protected]"
Dan untuk repo kerja:
git config user.name "Nama Kantor"
git config user.email "[email protected]"
Hindari mengandalkan konfigurasi global jika sering berpindah konteks kerja.
Kesalahan Umum yang Harus Dihindari
❌ Satu SSH key untuk semua akun
Menyulitkan audit, berisiko keamanan, dan rawan salah akses.
❌ Mengandalkan git config --global user.email
Ini penyebab utama commit salah identitas.
❌ Tidak memakai IdentitiesOnly yes
SSH bisa mencoba semua key yang ada dan memicu error Permission denied (publickey).
Verifikasi Setup
Cek koneksi SSH:
ssh -T github-personal
ssh -T github-work
Cek identitas commit di repo:
git config user.name
git config user.email
Jika semua benar, Git akan bekerja tanpa konflik identitas.
Ringkasan
| Masalah | Solusi |
|---|---|
| Banyak akun Git | SSH key terpisah |
| Key salah dipakai | Host alias di ~/.ssh/config |
| Commit salah email | Set user.name & user.email per repo |
| Error SSH | Gunakan IdentitiesOnly yes |
Penutup
Mengelola banyak identitas Git bukan masalah kompleks, tapi memang harus dilakukan dengan benar sejak awal.
Dengan pendekatan ini:
- Aman
- Jelas
- Mudah diskalakan
Dan yang terpenting: tidak ada lagi commit salah akun.