RƏSƏDXANA

Həftə 3 · 05/23

Git sənin geri al düyməndir

6 dəqiqəlik oxu

Uzun bir mətni «geri al» düyməsi olmayan redaktorda yazırsan. Bir saatdan sonra nəyisə pozursan və hansı cümlənin nə vaxt dəyişdiyini xatırlamırsan.

Git hər dəyişikliyin qeydini saxlayır. Kiçik commit — kiçik «geri al» addımı. AI dəqiqədə onlarla fayl dəyişdiyi üçün bu qeydlər indi daha vacibdir.

git switch -c feat/vote-fix     # a line of your own to work on
git add -p                      # look at each change before keeping it
git commit -m "fix: read the voter from the session"
git revert <commit>             # undo one idea, keep the rest
Dörd əmr. Üçüncüsünə qədər heç nə əsas xəttə toxunmur.

Çox deyilən söz: Git komandalar üçündür, mən sadəcə saxlayıram.

AI bir dəqiqədə 30 faylı dəyişə bildiyi halda, nəyin dəyişdiyini görmək və geri almaq üçün yeganə yol git-dir. Hər commit bir fikir olsun. Hər təcrübə üçün ayrıca branch aç. Commit etməzdən əvvəl diff-i oxu, çünki diff review-un özüdür.

Bir commit, bir fikir

Düzəliş, ad dəyişikliyi və format qarışıq commit-i düzəlişi itirmədən geri almaq olmur. Ayrı commit-lər ayrı-ayrılıqda geri alınır və oxunur.

Sən bunu istə

fix: vote list reads identity from the session only
refactor: rename usta -> memar (no behaviour change)
style: format LessonView

Xülasəni yox, diff-i oxu

AI-ın xülasəsi iddiadır, diff isə dəlil. Xüsusən mexaniki görünən dəyişikliklərə bax: escape-lər, encoding, lockfile, generated fayllar.

Sən bunu istə

git diff --stat              # which files, how much
git diff -- src/             # the code only
git diff --word-diff         # one-character changes become visible

Təcrübə üçün worktree

Riskli AI təcrübəsini eyni repodan ikinci qovluqda apar. Əsas işin toxunulmaz qalır, təcrübə alınmasa qovluğu silirsən.

Sən bunu istə

git worktree add ../exp-engine -b exp/engine
# ... experiment there ...
git worktree remove ../exp-engine

Diff oxuyanda soruş: Commit etməzdən əvvəl diff-i oxu: burada bir fikir var, yoxsa üç? Üç varsa, üç commit olmalıdır.

Terminlər

diff
İki versiya arasındakı sətir-sətir fərq.
branch
Əsas xətti pozmadan təcrübə etdiyin ayrıca xətt.
revert
Bir commit-i tarixi silmədən, onu ləğv edən yeni commit ilə geri almaq.
bisect
Xətanı hansı commit-in gətirdiyini tarixin yarısını ata-ata tapmaq.
worktree
Eyni repodan ikinci iş qovluğu: AI təcrübəsini əsas işinə toxunmadan ayrıca aparırsan.
pull request
Dəyişikliyi əsas xəttə birləşdirməzdən əvvəl review üçün təqdim etmək.

İndi sən yoxla

1AI deyir ki, «yalnız formatı düzəltdim». Əslində nə dəyişib?

- equations: ["A \\rightarrow B"],
+ equations: ["A \rightarrow B"],

2İki saatlıq AI dəyişikliyindən sonra nəsə qırılıb, harada olduğu bilinmir. Ən yaxşı yol?

Hazır prompt

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

prompt
Summarise the uncommitted changes:
- group them by purpose
- flag anything unrelated to <task>
- flag anything that looks mechanical but changes behaviour
  (encoding, escapes, whitespace in strings, generated files)
- propose how to split them into small commits, with messages
  that say why, not what.

Öz kodunda

  1. 1Bir həftə branch-da işlə, hər commit bir fikir olsun.
  2. 2Bir commit-i git revert ilə geri al.
  3. 3git bisect ilə bir xətanın hansı commit-dən gəldiyini tap.

Bunu görəndə bitib: Bir dəyişikliyi əllə deyil, git ilə geri almısan.

Daha dərinə

Oxumaq üçün