Ключові поняття

Область підготовки

Область підготовки (також відома як індекс) — один із внутрішніх механізмів Git, який дозволяє вибрати конкретні зміни у файлах проєкту, щоб зберегти їх назавжди як частину наступного коміту (уяви собі знімок стану/контрольну точку) у твоєму Git-репозиторії.

П: Навіщо вибирати окремі зміни? Чому б просто не зберегти все?

В: Можна й так. Але в реальній роботі часто виходить, що зміни між собою не пов'язані, навіть якщо планувалося інакше.

Наприклад, працюючи над новою функцією, можна випадково натрапити на одрук у назві змінної в наявному коді або оновити застарілу документацію. Ці зміни не стосуються самої функції, і їх часто краще закомітити окремо. Тоді, якщо пізніше доведеться скасувати правки функції, виправлення одруку чи оновлення документації не зникнуть разом із нею.

Область підготовки Git дозволяє:

  1. Вибирати зміни для наступного коміту, додаючи в область підготовки лише потрібні файли або частини файлів. Так можна створювати сфокусовані й змістовні коміти, кожен із яких стосується конкретного завдання чи функції.

  2. Переглядати зміни в області підготовки перед комітом, щоб переконатися, що вони правильні та повні. Це допомагає впіймати випадкові правки чи додавання до того, як вони стануть частиною історії репозиторію.

  3. Працювати поступово: закінчивши один шматок, додай зміни в область підготовки; продовжуй працювати над іншими частинами й додавай нові зміни пізніше. Така гнучкість дозволяє крок за кроком зібрати самодостатній стабільний набір змін.

  4. Відділяти роботу в процесі від завершеної. Якщо щось пішло не так, завжди можна викинути правки, які ще не додано в область підготовки, не чіпаючи вже підготовлені.

Приклади

Переглянути стан області підготовки та робочого простору:

git status

Додати один файл до області підготовки:

git add myfile.txt

Додати всі зміни в директорії до області підготовки:

git add src/

Символ . нижче вказує на поточну директорію, тобто означає «всі зміни в поточній директорії». Якщо запустити команду з кореня репозиторію, в область підготовки потраплять усі зміни в усьому репозиторії:

git add .

Закомітити підготовлені зміни в історії репозиторію з указаним повідомленням:

git commit -m "Add feature XYZ or fix bug ABC"

Прибрати всі зміни з області підготовки (самі правки у файлах при цьому нікуди не зникнуть):

git restore --staged .

Символ . знову тут; він означає «прибрати з області підготовки всі зміни в поточній директорії».

Можна також вказати конкретний файл чи директорію:

git restore --staged path/to/file.txt