RƏSƏDXANA

Həftə 3 · 06/23

İki prompt, bir fayl

6 dəqiqəlik oxu

İki usta eyni otağı təmir edir. Biri qapını sağa, digəri sola açılan edir. Hər ikisi düzgün işləyib; problem odur ki, otaqda bir qapı var.

İki branch eyni faylı fərqli niyyətlə dəyişəndə git sətirləri göstərir, amma qərarı sən verirsən: hansı niyyət qalır? Ən təhlükəlisi isə təmiz birləşən, amma bir-birinə zidd fərziyyələrdir.

<<<<<<< HEAD
const voter = session.id;              // branch A: identity from the session
=======
const voter = body.voterId ?? "guest"; // branch B: identity from the body
>>>>>>> feat/votes
Git «iki sətir var» deyir. Hansının qalacağını isə təhlükəsizlik qərarı həll edir, redaktor yox.

Çox deyilən söz: Merge konflikti nadir olur, git özü həll edir.

İki nəfər — ya da sənin iki sessiyan — eyni faylı fərqli promptlarla yenidən yazanda konflikt sətir səviyyəsində deyil, niyyət səviyyəsində olur: hər iki tərəf işləyən, amma bir-birinə zidd həll yazır. Git sətirləri birləşdirə bilər, niyyətləri yox. Çarə: kiçik branch, tez merge, və konflikti həll edəndə «hansı niyyət qalır?» sualı.

Sətir konflikti görünür, niyyət konflikti görünmür

Ən təhlükəli birləşmə təmiz keçəndir: iki fayl ayrı-ayrılıqda düzgündür, amma bir-birinə zidd fərziyyə daşıyır. Ona görə merge-dən sonra yoxlamalar işlədilir — birləşmə özü yeni bir vəziyyətdir.

AI belə yazır

// branch A, api.ts        // branch B, client.ts
return { votes };            const { count } = await res.json();
// merges cleanly, and the number never appears

Branch nə qədər qısa yaşasa, bir o qədər ucuzdur

AI dəqiqələr içində yüzlərlə sətir yazır, ona görə iki branch bir gündə insan sürətindən qat-qat çox ayrıla bilər. Kiçik və tez birləşən branch bu riski aradan qaldırır.

Generated faylları həll etmə, yenidən yarat

Lockfile, build çıxışı və avtomatik yaradılan tiplər əl ilə birləşdirilmir: birləşmə səhvi orada səssiz qalır. Konflikti sil, əmri yenidən işlət.

Sən bunu istə

git checkout --theirs package-lock.json
npm install        # let the tool write it
git add package-lock.json

Diff oxuyanda soruş: Birləşmədən sonra soruş: iki tərəfin fərziyyələri hələ də bir-birinə uyğundurmu? Yoxlamaları merge-dən sonra işlət.

Terminlər

semantic conflict
Git-in görmədiyi konflikt: iki tərəf fərqli fayllarda bir-birinə zidd fərziyyə yazır, birləşmə təmiz keçir, sistem qırılır.
small branch
Bir-iki günlük branch. Uzun branch AI ilə daha təhlükəlidir, çünki ayrılıq sürəti insan sürətindən yüksəkdir.
rebase vs merge
Rebase tarixi düz xətt edir, merge birləşməni qeyd edir. Komandada qayda birdir və hamı ona əməl edir.
lockfile conflict
package-lock kimi generated faylların konflikti əllə həll edilmir — yenidən yaradılır.
code owner
Müəyyən qovluğa dəyişiklik gələndə kimin baxmalı olduğunu deyən qayda. AI sürətli yazanda bu daha vacib olur.

İndi sən yoxla

1İki branch təmiz birləşdi, amma səs sayı ekranda görünmür. Niyə?

// branch A — api.ts
return json({ votes: n });
// branch B — client.ts
const { count } = await res.json();

2package-lock.json-da konflikt var. Nə edirsən?

Hazır prompt

İngiliscədir, çünki terminlər ingiliscədir. Tərcümə etsən də terminləri saxla.

prompt
We have a conflict between two branches that were each written
with an AI from different prompts.

- Summarise what each side was trying to do, in one sentence per side.
- List the places where the two intents contradict, not just where the lines
  collide — including files that merge cleanly but assume different things.
- Propose which intent survives and why, and what the merged code must do
  that neither side does today.
- After the merge, name the check that would have caught this contradiction.

Öz kodunda

  1. 1Qəsdən iki branch aç: eyni faylı iki fərqli promptla dəyişdir.
  2. 2Birləşdir və konflikti niyyət səviyyəsində həll et — hansı fərziyyə qalır?
  3. 3Layihənin qaydalar faylına bir sətir yaz: branch nə qədər yaşaya bilər və merge-dən sonra nə işlədilir.

Bunu görəndə bitib: Birləşmiş kod hər iki niyyəti bilərəkdən daşıyır və ya birini bilərəkdən atır — və yoxlamalar birləşmədən sonra işləyir.

Daha dərinə

Oxumaq üçün