Git / .gitignore

.gitignore

Бүх файлыг Git-д хянуулах шаардлагагүй. Нууц мэдээлэл, хэтэрхий том файл, автоматаар үүсдэг файлуудыг Git-д мэдүүлэхгүй байхад .gitignore хэрэглэнэ.

.gitignore гэж юу вэ?

Проектийн үндсэн фолдерт .gitignore нэртэй файл үүсгэнэ. Энэ файлд жагсаасан файл, фолдерыг Git хянадаггүй — git status-т харагдахгүй, git add . хийхэд орохгүй.

bash
touch .gitignore

Синтакс

gitignore
# Энэ мөр тайлбар

# Тодорхой файл
.env
.DS_Store

# Тодорхой өргөтгөлтэй бүх файл
*.log
*.tmp

# Тодорхой фолдер (дотор нь бүгдийг)
node_modules/
.next/
dist/

# Нэг фолдерт байгаа файл
/config/secrets.json

# Хаана ч байсан тодорхой нэртэй файл
**/*.env.local

# Хасах дүрэм (! тэмдэг — ignore хийгдсэнийг буцааж оруулах)
*.log
!important.log

/ тэмдэг эхэнд байвал зөвхөн үндсэн фолдерт хамаарна. Эцэст байвал фолдер гэдгийг илэрхийлнэ. * тэмдэг нь дурын тэмдэгтүүдийг орлоно.

Нийтлэг жишээ — Node.js / Next.js

gitignore
# Dependencies
node_modules/

# Next.js build
.next/
out/

# Орчны хувьсагч — ХЭЗЭЭ Ч commit хийхгүй
.env
.env.local
.env.*.local

# OS файлууд
.DS_Store           # macOS
Thumbs.db           # Windows
Desktop.ini

# Log файлууд
*.log
npm-debug.log*
yarn-error.log

# Editor тохируулга
.vscode/
.idea/

# TypeScript build мэдээлэл
*.tsbuildinfo

# Vercel
.vercel

.env файлыг .gitignore-д заавал нэмэх — Supabase service role key, API нууц кодуудыг GitHub-д оруулбал нийтэд харагдана.

Global gitignore — бүх проектод

.DS_Store (macOS) гэх мэт OS-ийн файлуудыг проект бүрийн .gitignore-д нэмэхийн оронд нэг удаа глобалаар тохируулж болно:

bash
git config --global core.excludesfile ~/.gitignore_global

~/.gitignore_global файлд:

gitignore
# macOS
.DS_Store
.AppleDouble
.LSOverride

# Windows
Thumbs.db
ehthumbs.db
Desktop.ini

# Linux
*~

# Editor
.vscode/
.idea/
*.swp

Энэ тохируулга таны компьютерийн бүх Git repository-д хамаарна.

git rm --cached — аль хэдийн track хийгдсэн файлыг хасах

.gitignore-д нэмэхийн өмнө commit хийчихсэн файлыг repository-с хасахад git rm --cached ашиглана. Файлыг компьютерт үлдээгээд зөвхөн Git-ийн хяналтаас гаргана:

bash
git rm --cached .env

Фолдер бол -r тугийг нэмнэ:

bash
git rm --cached -r node_modules/

Дараа нь .gitignore-д нэмж, commit хийнэ:

bash
echo ".env" >> .gitignore
git add .gitignore
git commit -m "chore: .env-г gitignore-д нэмэх"

.gitignore үйлчлэхгүй байвал

.gitignore-д нэмсэн ч файл дахиж харагдаж байвал шалтгаан нь тэр файл аль хэдийн track хийгдчихсэн байгаа явдал. git rm --cached ашиглан хасна.

Git-ийн cache-г бүхэлд нь цэвэрлэх (хэрэгтэй тохиолдолд):

bash
git rm -r --cached .
git add .
git commit -m "chore: gitignore дахин хэрэгжүүлэх"

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

Branch гэж юу болох, HEAD pointer хэрхэн ажилладгийг судална.