Panduan Resolusi Konflik Git (Unrelated Histories)
Dokumen ini menjelaskan cara menangani masalah rejected - non-fast-forward atau fatal: refusing to merge unrelated histories yang terjadi ketika mencoba push/pull antara repositori lokal dan remote yang memiliki riwayat commit yang berbeda.
1. Masalah: "Rejected - Non-Fast-Forward"
Masalah ini biasanya terjadi jika:
- Anda baru saja menginisialisasi repositori lokal baru dan mencoba push ke repositori remote yang sudah ada isinya.
- Seseorang telah melakukan
force pushke remote. - Anda mencoba menggabungkan dua proyek yang tidak berbagi commit awal yang sama.
2. Solusi Langkah-Demi-Langkah
Langkah 1: Tarik (Pull) Perubahan dari Remote
Gunakan flag --allow-unrelated-histories untuk memaksa Git menggabungkan dua riwayat yang berbeda.
git pull origin main --allow-unrelated-histories --no-rebaseLangkah 2: Resolusi Konflik (Jika Ada)
Jika terjadi konflik massal dan Anda ingin mengutamakan versi lokal Anda , gunakan perintah berikut:
# Menggunakan versi lokal untuk semua file yang konflik
git checkout --ours .
# ATAU jika ingin memilih manual per file:
# git checkout --ours path/to/file.phpJika Anda ingin mengutamakan versi remote , gunakan:
git checkout --theirs .Langkah 3: Commit Hasil Penggabungan
Setelah konflik diselesaikan (baik via checkout --ours atau manual), tambahkan file ke staging dan commit.
git add .
git commit -m "Merge remote-tracking branch 'origin/main' with local changes (resolved conflicts)"Langkah 4: Push ke Remote
Sekarang riwayat sudah tergabung, Anda bisa melakukan push secara normal.
git push origin main3. Tips Pencegahan di Masa Depan
- Selalu lakukan
git pullsebelum mulai bekerja untuk memastikan lokal Anda sinkron dengan remote. - Jika Anda membuat repositori baru di GitHub dengan file
READMEatauLICENSE, segera lakukangit pull origin main --allow-unrelated-historiessetelahgit remote add origin. - Hindari penggunaan
git push -f(force push) kecuali Anda benar-benar yakin, karena ini akan merusak riwayat rekan tim lainnya.
Dibuat untuk dokumentasi internal proyek Avery PHP.