Viet commit message chuan de truy vet loi nhanh

Ban tung git blame mot dong loi, thay commit ghi “fix bug”, roi khong hieu gi them? Bai nay chi cach viet commit message va to chuc lich su Git sao cho sau sau thang van truy vet duoc nguyen nhan. Ket qua: debug nhanh hon, review nhe hon, revert an toan hon.

Vi sao commit message quan trong hon ban nghi

Code noi cho ban biet cai gi dang chay. Commit message noi cho ban biet tai sao no duoc viet nhu vay. Khi debug, cau hoi dat gia nhat luon la “tai sao”. Diff cho thay mot dieu kien duoc them vao, nhung chi commit message moi giai thich no chong lai bug nao, ticket nao.

Lich su Git khong phai nhat ky ca nhan. No la tai lieu ky thuat duoc doc boi nguoi khac (va boi chinh ban trong tuong lai, khi da quen sach het ngu canh).

Cau truc mot commit message tot

Dong tieu de

Gioi han khoang 50 ky tu, viet o the menh lenh: “Add”, “Fix”, “Remove”, khong phai “Added” hay “Fixing”. Ly do: Git tu sinh message theo the menh lenh (vi du khi merge), nen giu dong bo se doc de hon. Vi du: Fix race condition khi cache het han dong thoi.

Phan than

Cach dong tieu de mot dong trong. Giai thich tai sao, khong lap lai cai gi (diff da noi ro roi). Neu co bug, mo ta trieu chung truoc, roi nguyen nhan goc. Neu co danh doi, ghi lai lua chon va ly do bo phuong an khac.

Mot commit = mot y dinh

Loi pho bien nhat khong nam o cau chu, ma o pham vi commit. Mot commit gom sua bug, doi ten bien, va them tinh nang moi la commit khong the review va khong the revert sach. Nguyen tac: moi commit la mot thay doi logic doc lap, build duoc va (ly tuong) test duoc.

Neu ban lo trung nhieu thay doi, git add -p cho phep chon tung khoi de tach thanh cac commit rieng truoc khi day len.

Vi du thuc te

Mot dong nghiep bao cao trang thanh toan thi thoang bao loi 500. Reviewer git log file lien quan, thay commit gan nhat: “update payment”. Vo nghia. Phai doc lai toan bo diff, mat 40 phut.

Neu commit do ghi: Doi timeout goi cong thanh toan tu 30s xuong 5s de tranh treo request; danh doi: giao dich cham co the fail va can retry — thi nguoi debug hieu ngay: loi 500 rat co the do timeout moi cat qua som. Cung mot diff, nhung message tiet kiem hang gio dieu tra.

Loi thuong gap va cach sua

“fix”, “wip”, “update”

Nhung message rong nghia. Truoc khi commit, tu hoi: neu chi doc dong nay, nguoi khac co doan dung viec ban lam khong? Neu khong, viet lai.

Gop het mot ngay vao mot commit khong lo

Khong ai review noi va khong ai revert noi. Commit nho, thuong xuyen, theo tung y dinh.

Force push bua bai len nhanh chung

Sua lai lich su tren nhanh ca nhan thi on. Nhung git push --force len nhanh chung dang co nguoi khac dung se lam mat commit cua ho. Neu bat buoc, dung --force-with-lease de Git tu choi khi nhanh da bi nguoi khac cap nhat.

Trong day “noise” (format lai, doi tab/space) vao commit logic

Lam diff phinh to, che di thay doi that su. Tach commit format ra rieng.

Checklist truoc khi commit

  • Dong tieu de duoi ~50 ky tu, the menh lenh, noi ro y dinh.
  • Commit chi chua mot thay doi logic; da chay git add -p neu can tach.
  • Phan than giai thich “tai sao” va danh doi (neu co), khong lap lai diff.
  • Da tham chieu so ticket/issue khi lien quan.
  • Khong lan format lai vao commit logic.
  • Neu sua lich su nhanh chung: dung --force-with-lease, khong dung --force.

Ket luan

Commit message tot khong ton them thoi gian dang ke — no chi doi lai vai giay suy nghi de tiet kiem hang gio sau nay. Buoc tiep theo: mo lich su commit gan nhat cua ban, doc 10 dong tieu de. Neu co hon mot nua khong the hieu neu khong mo diff, do la dau hieu can thay doi thoi quen ngay hom nay.

Cau hoi thuong gap

Nen commit thuong xuyen hay gom lai?

Commit thuong xuyen khi lam viec cuc bo. Khi day len nhanh chung, ban co the squash cac commit vun (nhu “fix typo”) thanh cac don vi logic sach. Muc tieu la lich su chung sach, khong phai it commit.

Co nen dung Conventional Commits (feat:, fix:…) khong?

Huu ich neu doi ban tu dong sinh changelog hoac version tu prefix. Neu khong dung den tu dong hoa do, dung quy uoc nhe hon cung on — quan trong la nhat quan trong doi.

Rebase hay merge?

Rebase cho lich su tuyen tinh, de doc, hop khi don nhanh tinh nang truoc khi gop. Merge giu nguyen ngu canh re nhanh. Nhieu doi rebase nhanh ca nhan roi merge vao nhanh chinh. Khong co dap an dung tuyet doi; hay theo quy uoc chung cua doi.

Lo commit thong tin nhay cam (mat khau, key) thi sao?

Coi nhu key da lo va xoay (rotate) ngay lap tuc — do la viec quan trong nhat. Xoa khoi lich su bang cong cu chuyen dung (nhu git filter-repo) chi la buoc phu, vi key co the da bi clone di noi khac.

Tham khao

  • Tai lieu chinh thuc Git (git-scm.com) — phan git-commit va git-rebase.
  • Pro Git (sach mien phi cua Scott Chacon, ban tren git-scm.com).

Similar Posts