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Ç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 appearsBranch 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.jsonDiff 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.
İ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.
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
- 1Qəsdən iki branch aç: eyni faylı iki fərqli promptla dəyişdir.
- 2Birləşdir və konflikti niyyət səviyyəsində həll et — hansı fərziyyə qalır?
- 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