git add ба staging area
Файл засварласны дараа шууд commit хийдэггүй. Эхлээд "staging area" буюу "индекс" гэж нэрлэгддэг завсрын хэсэгт файлуудаа нэмнэ. Яагаад ийм алхам хэрэгтэй вэ — энэ хичээлд тайлбарлана.
Staging area гэж юу вэ?
Git-д гурван "бүс" байдаг:
[Ажлын фолдер] → git add → [Staging area] → git commit → [Repository]
Ажлын фолдер — та файл нэмж, засварлаж, устгадаг газар.
Staging area — дараагийн commit-д ямар өөрчлөлт орохыг заасан "хүлээлтийн өрөө". Commit хийхээсээ өмнө энд нэмнэ.
Repository — commit бүр үүрд хадгалагддаг газар.
Staging area-г байлгах гол шалтгаан: нэг дор хэд хэдэн файл засварласан ч зөвхөн хамааралтай файлуудыг нэг commit-д оруулж болно. Ингэснээр commit-ийн түүх цэвэр, утга учиртай болдог.
git add <file> — тодорхой файл нэмэх
git add index.html
Зөвхөн index.html файлыг staging area-д нэмнэ. Бусад өөрчлөгдсөн файлд нөлөөлөхгүй.
Хэд хэдэн файл нэг дор нэмэх:
git add index.html style.css
Тодорхой фолдерын доторх бүх файл нэмэх:
git add src/
git add . — бүгдийг нэмэх
Одоогийн фолдер болон доод фолдеруудад байгаа бүх өөрчлөлтийг staging area-д нэмнэ:
git add .
Хурдан боловч болгоомжтой ашиглах хэрэгтэй — санаандгүй файлууд орж болзошгүй. .gitignore файл ашиглан хасах ёстой файлуудыг заана (8-р хичээлд тайлбарлана).
git add -p — patch mode
Энэ бол staging area-г хамгийн нарийн удирдах арга. Нэг файлын зарим хэсгийг staging area-д нэмж, үлдсэн хэсгийг орхих боломж олгоно.
git add -p
Git нэг файлын өөрчлөлтийг "hunk" гэсэн блокуудад хуваана. Блок бүрт асуулт гаргана:
@@ -1,4 +1,6 @@
function hello() {
+ console.log("Сайн уу");
+ console.log("Дэлхий");
return true;
}
Stage this hunk [y,n,q,a,d,s,?]?
| Товч | Утга |
| ---- | ------------------- |
| y | Энэ блокийг нэм |
| n | Энэ блокийг орхи |
| s | Блокийг жижиг болго |
| q | Гарах |
| ? | Тусламж |
Patch mode ашигласнаар нэг файлын "нэвтрэлтийн засвар" болон "шинэ функц нэмэлт" хоёрыг тусдаа commit болгож болно.
git restore --staged — staging area-с буцаах
Staging area-д буруу файл нэмэв үү? Буцаах:
git restore --staged index.html
Файл нь staging area-с гарч, дахин "засварлагдсан боловч нэмэгдээгүй" төлөвт орно. Файлын агуулга өөрчлөгдөхгүй — зөвхөн staging-ийн тэмдэглэгээ арилна.
Бүх файлыг staging area-с буцаах:
git restore --staged .
Жишээ: staging area ажиллагаа
# Хоёр файл засварлав
# index.html — шинэ хуудасны бүтэц
# style.css — өнгө засвар
# Зөвхөн index.html-ийг нэмэх
git add index.html
# Staging-ийн байдал харах
git status
Changes to be committed:
modified: index.html
Changes not staged for commit:
modified: style.css
index.html commit-д бэлэн, style.css дараагийн commit-д орно.
Дараагийн хичээлд:
Staging area-д нэмсэн өөрчлөлтүүдийг git commit ашиглан Repository-д хадгалах аргыг судална.