Tips & Tricks (Diperbarui: 2/6/2026)

Menyelesaikan Konflik Git dengan Claude Code secara Aman

Workflow aman untuk konflik Git dengan Claude Code: prompt, kasus nyata, jebakan, test, dan aturan tim.

Menyelesaikan Konflik Git dengan Claude Code secara Aman

Menyelesaikan konflik Git bukan sekadar menghapus <<<<<<<, =======, dan >>>>>>>. Marker itu hanya menunjukkan bagian yang tidak bisa diputuskan Git secara otomatis. Pekerjaan sebenarnya adalah menjaga niat dari dua branch: satu branch mungkin memperbaiki authorization, sementara branch lain menambah screen baru, API call, dan test.

Claude Code membantu karena bisa membaca file konflik, memeriksa kode sekitar, menjalankan perintah Git, memperbarui test, dan menjelaskan diff akhir. Namun keputusan tetap harus dipegang developer. Prompt yang terlalu umum seperti “fix all conflicts” bisa menghasilkan kode yang compile, tetapi menghapus aturan bisnis atau membuat validasi ganda.

Workflow yang paling stabil adalah: manusia menulis prioritas dan batasan, Claude Code melakukan edit mekanis, lalu manusia memeriksa diff, test, dan behavior. Ini pola yang dipakai di project ClaudeCodeLab.

Peta Workflow

perubahan dari main atau release
        |
        v
Git melaporkan file belum merge
        |
        v
Claude Code menyelesaikan dengan policy tertulis
        |
        v
manusia memeriksa diff, test, dan behavior
        |
        v
commit state yang sudah selesai

Untuk mode non-interaktif, dokumentasi resmi Claude Code CLI reference menjelaskan pola claude -p "query". Untuk otomatisasi check, gunakan Claude Code hooks reference dan Claude Code settings. Di sisi Git, Git rerere adalah fitur resmi untuk memakai ulang resolusi yang pernah direkam.

Cek State Terlebih Dahulu

Sebelum meminta Claude Code mengedit, pastikan working tree tidak berisi perubahan lokal yang tidak terkait.

git status --short
git branch --show-current
git diff --name-only --diff-filter=U

Perintah terakhir hanya menampilkan file yang masih unresolved. Baca daftar itu sendiri. Jika ada file yang tidak kamu kenal, pahami penyebabnya sebelum AI mengubah kode.

Masukkan empat hal ini ke prompt:

PertanyaanContoh policy
Sisi mana yang prioritasPertahankan security fix dari main dan UI baru dari feature
Apa yang boleh dieditHanya file unresolved dan test yang langsung terkait
Bagaimana file generatedRegenerate lockfile dan generated code, jangan merge manual
Kapan selesaiTidak ada marker, git diff --check bersih, test pass, keputusan diringkas

Policy singkat ini membuat output Claude Code lebih mudah diaudit.

Kasus 1: Merge main ke feature branch

Kasus paling umum adalah feature branch yang tertinggal beberapa hari dan perlu mengambil perubahan terbaru dari main.

git fetch origin
git merge origin/main

cat > /tmp/claude-conflict-plan.md <<'PROMPT'
Selesaikan Git merge conflict saat ini.

Konteks:
- Branch saat ini adalah feature branch.
- Pertahankan security fix dan perubahan type dari origin/main.
- Pertahankan screen baru, API call, dan test dari feature branch.
- Kerjakan hanya file dari git diff --name-only --diff-filter=U.

Tugas:
1. Jelaskan singkat kenapa tiap file konflik.
2. Hapus conflict marker dan integrasikan niat kedua sisi.
3. Update hanya test yang langsung terkait jika perlu.
4. Jalankan git diff --check.
5. Ringkas keputusan dan command yang dijalankan.

Jangan:
- Melakukan refactor yang tidak terkait.
- Membuang salah satu sisi tanpa penjelasan.
- Mengedit package-lock.json secara manual.
PROMPT

claude -p "$(cat /tmp/claude-conflict-plan.md)"
git diff --check
npm test

Yang penting bukan kalimat persisnya, tetapi prioritas, scope, aturan file generated, dan kriteria selesai. Dengan begitu review menjadi jelas.

Pengalaman gagal yang pernah terjadi: main menambah aturan authorization yang lebih ketat, sementara feature menambah cabang UI. Prompt yang hanya bilang “pertahankan keduanya” membuat UI terlihat, tetapi API tetap mengembalikan 403. Sejak itu saya selalu menulis bahwa security dan authorization harus dipertahankan, lalu UI/API consistency harus dicek.

Kasus 2: Rebase satu langkah sekali

Konflik saat git rebase lebih sensitif daripada merge biasa, karena Git berhenti di setiap commit. Selain itu, ours dan theirs bisa terasa terbalik saat rebase. Jangan jalankan git checkout --ours sebelum memahami diff.

git rebase origin/main

cat > /tmp/claude-rebase-step.md <<'PROMPT'
Selesaikan hanya konflik current step dari rebase ini.

Pertama:
- Konfirmasi dengan git status bahwa kita sedang rebase.
- List file unresolved dengan git diff --name-only --diff-filter=U.
- Pahami niat commit yang sedang replay dari git log terbaru.
- Integrasikan niat commit itu dengan behavior main saat ini.

Batasan:
- Jangan jalankan git rebase --continue.
- Berhenti setelah resolve dan git add.
- Jangan edit file yang tidak terkait.
- Jika keputusan ambigu, jelaskan opsi, jangan menebak.
PROMPT

claude -p "$(cat /tmp/claude-rebase-step.md)"
git diff --check
npm test
git rebase --continue

Claude Code bisa diminta lanjut otomatis, tetapi untuk pemula lebih aman berhenti di setiap step. Jika resolusi salah lewat beberapa commit, penyebabnya lebih sulit dilacak.

Kasus 3: Lockfile dan generated code

package-lock.json, pnpm-lock.yaml, code generated dari OpenAPI atau Prisma, dan snapshot besar tidak cocok di-merge baris demi baris. Selesaikan source file dulu, lalu generate ulang output.

cat > /tmp/claude-lockfile-policy.md <<'PROMPT'
Selesaikan konflik lockfile atau generated file.

Policy:
- Selesaikan source file yang diedit manusia dulu, seperti package.json, schema, atau OpenAPI.
- Jangan merge package-lock.json secara manual.
- Setelah dependency diputuskan, regenerate dengan npm install.
- Untuk generated code, selesaikan source schema lalu generate ulang.
- Jelaskan kenapa diff hasil regenerate memang expected.

Boleh menjalankan:
- npm install
- npm test
- npm run lint
PROMPT

claude -p "$(cat /tmp/claude-lockfile-policy.md)"
npm install
npm test
git add package.json package-lock.json

Jebakan umum adalah mempertahankan dua dependency di package.json, tetapi mengambil lockfile dari satu sisi saja. Bisa jalan di lokal, lalu gagal di CI karena dependency resolution berbeda. Tulis aturan: source dulu, output generated setelahnya.

Kasus 4: Analisis penyebab konflik

Setelah konflik selesai, gunakan momen itu untuk mengurangi konflik berikutnya. Jika route, permission map, schema, atau dependency sering bertabrakan, kemungkinan PR terlalu besar atau ownership kurang jelas.

cat > /tmp/claude-conflict-retro.md <<'PROMPT'
Analisis kenapa Git conflict ini terjadi.

Investigasi:
- List file dengan git diff --name-only --diff-filter=U.
- Gunakan git log --oneline --all -- <file> untuk melihat history dua branch.
- Klasifikasikan penyebab: shared ownership, PR terlalu besar, generated noise, atau rule hilang.

Output:
- Ringkasan penyebab dalam tiga baris.
- Rule yang perlu ditambahkan ke CLAUDE.md.
- Apakah lebih efektif split PR, koordinasi owner, atau tambah test.
PROMPT

claude -p "$(cat /tmp/claude-conflict-retro.md)"

Jika src/routes.ts konflik setiap minggu, mungkin route registration perlu dipisah per feature. Jika package.json sering konflik, perubahan dependency sebaiknya dipisah menjadi PR khusus.

Check dan Aturan Tim

Setelah edit, minimal jalankan:

git diff --check
git diff --name-only --diff-filter=U
npm test

Tambahkan typecheck, lint, atau E2E saat konflik menyentuh kontrak API, routing, billing, atau authorization. Check berulang bisa diotomasi dengan hooks. Lihat Panduan Claude Code Hooks.

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Bash(git merge*)|Bash(git rebase*)",
        "hooks": [
          {
            "type": "command",
            "command": "git diff --check && npm test"
          }
        ]
      }
    ]
  }
}

Dokumentasikan juga policy di CLAUDE.md, karena file itu menjadi project memory untuk Claude Code. Untuk struktur, baca CLAUDE.md best practices dan panduan kolaborasi tim.

## Git conflict policy
- Pertahankan security fix, authorization check, dan pencegahan data loss secara default.
- Cek UI, API, schema, dan test sebagai satu kesatuan.
- Regenerate lockfile dan generated code, jangan edit manual.
- Saat rebase, manusia review diff sebelum git rebase --continue.
- Jika keputusan tidak jelas, tampilkan opsi dan jangan membuang salah satu sisi diam-diam.

Jebakan dan Hasil Uji

Jangan menghafal ours dan theirs sebagai label tetap; saat rebase keduanya bisa membingungkan. “Pertahankan keduanya” juga tidak selalu benar: dua validasi, dua redirect, atau dua feature flag bisa menciptakan behavior ganda. Test yang pass tetap perlu review manual jika konflik menyentuh authentication, billing, migration, atau operasi delete.

Dalam uji Masa pada project TypeScript dengan sekitar 15 file konflik, prompt yang vague memperbaiki syntax tetapi melewatkan update test terkait. Dengan policy seperti artikel ini, Claude Code menghasilkan diff lebih kecil, menjelaskan keputusan, dan mempercepat review.

Mulai dari feature branch kecil: list file unresolved, berikan policy jelas, jalankan test, lalu review diff sendiri. Setelah workflow stabil, pindahkan aturan berulang ke hooks dan CLAUDE.md agar tim punya proses konflik yang konsisten.

#claude-code #git #conflict-resolution #team-development
Gratis

PDF gratis: cheatsheet Claude Code

Masukkan email dan unduh satu halaman berisi command, kebiasaan review, dan workflow aman.

Kami menjaga datamu dan tidak mengirim spam.

Masa

Tentang penulis

Masa

Engineer yang berfokus pada workflow Claude Code praktis dan adopsi tim.