.gitignore
Бүх файлыг Git-д хянуулах шаардлагагүй. Нууц мэдээлэл, хэтэрхий том файл, автоматаар үүсдэг файлуудыг Git-д мэдүүлэхгүй байхад .gitignore хэрэглэнэ.
.gitignore гэж юу вэ?
Проектийн үндсэн фолдерт .gitignore нэртэй файл үүсгэнэ. Энэ файлд жагсаасан файл, фолдерыг Git хянадаггүй — git status-т харагдахгүй, git add . хийхэд орохгүй.
touch .gitignore
Синтакс
# Энэ мөр тайлбар
# Тодорхой файл
.env
.DS_Store
# Тодорхой өргөтгөлтэй бүх файл
*.log
*.tmp
# Тодорхой фолдер (дотор нь бүгдийг)
node_modules/
.next/
dist/
# Нэг фолдерт байгаа файл
/config/secrets.json
# Хаана ч байсан тодорхой нэртэй файл
**/*.env.local
# Хасах дүрэм (! тэмдэг — ignore хийгдсэнийг буцааж оруулах)
*.log
!important.log
/ тэмдэг эхэнд байвал зөвхөн үндсэн фолдерт хамаарна. Эцэст байвал фолдер гэдгийг илэрхийлнэ. * тэмдэг нь дурын тэмдэгтүүдийг орлоно.
Нийтлэг жишээ — Node.js / Next.js
# 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-д нэмэхийн оронд нэг удаа глобалаар тохируулж болно:
git config --global core.excludesfile ~/.gitignore_global
~/.gitignore_global файлд:
# 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-ийн хяналтаас гаргана:
git rm --cached .env
Фолдер бол -r тугийг нэмнэ:
git rm --cached -r node_modules/
Дараа нь .gitignore-д нэмж, commit хийнэ:
echo ".env" >> .gitignore
git add .gitignore
git commit -m "chore: .env-г gitignore-д нэмэх"
.gitignore үйлчлэхгүй байвал
.gitignore-д нэмсэн ч файл дахиж харагдаж байвал шалтгаан нь тэр файл аль хэдийн track хийгдчихсэн байгаа явдал. git rm --cached ашиглан хасна.
Git-ийн cache-г бүхэлд нь цэвэрлэх (хэрэгтэй тохиолдолд):
git rm -r --cached .
git add .
git commit -m "chore: gitignore дахин хэрэгжүүлэх"
Дараагийн хичээлд:
Branch гэж юу болох, HEAD pointer хэрхэн ажилладгийг судална.