Git / git add ба staging area

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> — тодорхой файл нэмэх

bash
git add index.html

Зөвхөн index.html файлыг staging area-д нэмнэ. Бусад өөрчлөгдсөн файлд нөлөөлөхгүй.

Хэд хэдэн файл нэг дор нэмэх:

bash
git add index.html style.css

Тодорхой фолдерын доторх бүх файл нэмэх:

bash
git add src/

git add . — бүгдийг нэмэх

Одоогийн фолдер болон доод фолдеруудад байгаа бүх өөрчлөлтийг staging area-д нэмнэ:

bash
git add .

Хурдан боловч болгоомжтой ашиглах хэрэгтэй — санаандгүй файлууд орж болзошгүй. .gitignore файл ашиглан хасах ёстой файлуудыг заана (8-р хичээлд тайлбарлана).

git add -p — patch mode

Энэ бол staging area-г хамгийн нарийн удирдах арга. Нэг файлын зарим хэсгийг staging area-д нэмж, үлдсэн хэсгийг орхих боломж олгоно.

bash
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-д буруу файл нэмэв үү? Буцаах:

bash
git restore --staged index.html

Файл нь staging area-с гарч, дахин "засварлагдсан боловч нэмэгдээгүй" төлөвт орно. Файлын агуулга өөрчлөгдөхгүй — зөвхөн staging-ийн тэмдэглэгээ арилна.

Бүх файлыг staging area-с буцаах:

bash
git restore --staged .

Жишээ: staging area ажиллагаа

bash
# Хоёр файл засварлав
# 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-д хадгалах аргыг судална.