Область підготовки
Область підготовки (також відома як індекс) — один із внутрішніх механізмів Git, який дозволяє вибрати конкретні зміни у файлах проєкту, щоб зберегти їх назавжди як частину наступного коміту (уяви собі знімок стану/контрольну точку) у твоєму Git-репозиторії.
П: Навіщо вибирати окремі зміни? Чому б просто не зберегти все?
В: Можна й так. Але в реальній роботі часто виходить, що зміни між собою не пов'язані, навіть якщо планувалося інакше.
Наприклад, працюючи над новою функцією, можна випадково натрапити на одрук у назві змінної в наявному коді або оновити застарілу документацію. Ці зміни не стосуються самої функції, і їх часто краще закомітити окремо. Тоді, якщо пізніше доведеться скасувати правки функції, виправлення одруку чи оновлення документації не зникнуть разом із нею.
Область підготовки Git дозволяє:
-
Вибирати зміни для наступного коміту, додаючи в область підготовки лише потрібні файли або частини файлів. Так можна створювати сфокусовані й змістовні коміти, кожен із яких стосується конкретного завдання чи функції.
-
Переглядати зміни в області підготовки перед комітом, щоб переконатися, що вони правильні та повні. Це допомагає впіймати випадкові правки чи додавання до того, як вони стануть частиною історії репозиторію.
-
Працювати поступово: закінчивши один шматок, додай зміни в область підготовки; продовжуй працювати над іншими частинами й додавай нові зміни пізніше. Така гнучкість дозволяє крок за кроком зібрати самодостатній стабільний набір змін.
-
Відділяти роботу в процесі від завершеної. Якщо щось пішло не так, завжди можна викинути правки, які ще не додано в область підготовки, не чіпаючи вже підготовлені.
Приклади
Переглянути стан області підготовки та робочого простору:
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.gitignoregit checkoutgit configgit taggit worktree