Menghubungkan ke Repository Git dengan Banyak Identitas
3 min read

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:

  1. Autentikasi ke Git server → SSH key
  2. Identitas commituser.name dan user.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

MasalahSolusi
Banyak akun GitSSH key terpisah
Key salah dipakaiHost alias di ~/.ssh/config
Commit salah emailSet user.name & user.email per repo
Error SSHGunakan 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.