Git / git commit

git commit

Staging area-д бэлдсэн өөрчлөлтүүдийг repository-д үүрд хадгалах үйлдлийг commit гэдэг. Commit бүр дугаартай, огноотой, зохиогчтой, мессежтэй.

git commit -m — мессежтэй commit

bash
git commit -m "Нэвтрэх хуудас нэмэх"

-m тугийн дараа давхар хашилтад commit мессежийг бичнэ. Мессежгүй commit хийх боломжгүй — Git editor нээж мессеж оруулахыг шаардана.

Гаралт:

код
[main 3f2a1bc] Нэвтрэх хуудас нэмэх
 2 files changed, 47 insertions(+), 3 deletions(-)
  • main — одоогийн branch
  • 3f2a1bc — commit-ийн богино hash (SHA-1 дугаар)
  • 47 insertions, 3 deletions — нэмэгдсэн, устгагдсан мөрийн тоо

git commit -am — нэмэх ба commit нэг дор

Tracked (Git-д мэдэгдэх) файлуудын өөрчлөлтийг git add хийлгүйгээр шууд commit хийх:

bash
git commit -am "Товчны өнгө засах"

-a тугийн сул тал: шинээр үүсгэсэн (untracked) файлуудыг оруулдаггүй — тэдгээрийг заавал git add хийх хэрэгтэй.

Тиймээс -am-г зөвхөн аль хэдийн track хийгдэж байгаа файлуудад ашигладаг.

Сайн commit message бичих дүрэм

Commit message нь таны ирээдүйн өөртөө болон хамтарч ажиллаж буй хүмүүст зориулсан тэмдэглэл. Муу мессеж — "засвар", "update", "aaa". Сайн мессеж — юу хийснийг товч тайлбарласан.

Дүрмүүд:

код
1. Эхний мөр 50 тэмдэгтээс богино байх
2. Тушаалын хэлбэрээр бичих: "нэмэх", "засах", "устгах"
3. Яагаад хийснийг мэдэхэд хэцүү бол 2-р мөрөөс тайлбарлах
4. Period (.) цэг тавихгүй

Муу vs сайн:

код
❌ fixed stuff
❌ update
❌ wip

✅ Нэвтрэх хуудасны алдааны мессеж засах
✅ Хэрэглэгчийн профайл хуудас нэмэх
✅ API дуудлагын хугацааны хязгаарыг 5 секунд болгох

Дэлгэрэнгүй тайлбар шаардлагатай үед:

bash
git commit -m "Нэвтрэлтийн алдааг засах

Supabase session дууссан үед хэрэглэгчийг /login руу
дахин чиглүүлдэггүй байсан. refreshSession() дуудлага
нэмж асуудлыг шийдлэм."

Эхний мөр — товч гарчиг. Хоосон мөрийн дараа — дэлгэрэнгүй тайлбар.

Conventional Commits

Олон баг commit message-д стандарт бүтэц ашигладаг — Conventional Commits:

код
<төрөл>(<хамрах хүрээ>): <тайлбар>

Үндсэн төрлүүд:

| Төрөл | Тайлбар | | ---------- | ------------------------------------------ | | feat | Шинэ боломж нэмэх | | fix | Алдаа засах | | docs | Зөвхөн баримт бичиг | | style | Форматлалт, цагаан зай (логик өөрчлөлтгүй) | | refactor | Кодын бүтэц сайжруулах | | test | Тест нэмэх эсвэл засах | | chore | Build процесс, хэрэгслүүд |

Жишээнүүд:

код
feat(auth): нэвтрэх хуудас нэмэх
fix(api): хугацаа дуусах алдааг засах
docs(readme): суулгах заавар шинэчлэх
style(nav): navbar-ийн зай тохируулах
refactor(db): Supabase query-г функцэд хуваах
chore: next.js 15.2 руу шинэчлэх

Conventional Commits ашигласнаар changelog автоматаар үүсгэх, version дугаар автоматаар ахиулах боломжтой болдог.

Commit цуцлах — amend

Сүүлийн commit-ийн мессежийг засах (push хийгдээгүй байх ёстой):

bash
git commit --amend -m "Зөв мессеж"

Мартагдсан файл сүүлийн commit-д нэмэх:

bash
git add мартсан-файл.ts
git commit --amend --no-edit

--no-edit тугийн ачаар мессежийг дахин бичихгүй, зөвхөн файл нэмнэ.

Дараагийн хичээлд:

git status болон git log ашиглан repository-ийн одоогийн байдал болон commit түүхийг харах аргыг судална.