8. Зміни, а не файли
Цілі
- Зрозуміти, що Git працює зі змінами, а не файлами.
Більшість систем по контролю версіями працюють з файлами. Ви додаєте файл у контроль версіями та з цього моменту система відстежує зміни у файлі.
Git фокусується на змінах у файлі, а не на самому файлі. Коли ви виконуєте команду git add file
, ви не кажете Git додати файл у репозиторій. Скоріше ви кажете, що Git має помітити поточний стан файлу, коміт якого буде виконано пізніше.
Ми спробуємо дослідити цю різницю в цьому уроці.
01 Перша зміна: Додайте стандартні теги сторінок
Змініть сторінку «Hello, World» так, щоб вона містила стандартні теги <html>
й <body>
.
Файл: hello.html
<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>
02 Додайте ці зміни
Тепер додайте ці зміни в індекс Git.
Виконайте
git add hello.html
03 Друга зміна: Додайте заголовок HTML
Тепер додайте заголовок HTML (секцію <head>
) до сторінки «Hello, World».
Файл: hello.html
<html>
<head>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>
04 Перевірте поточний статус
Виконайте
git status
Ви побачите:
Результат
$ git status
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: hello.html
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: hello.html
Зверніть увагу, що hello.html
згадано двічі. Перша зміна (додавання стандартних тегів) проіндексована і готова до коміту. Друга зміна (додавання заголовків HTML) є непроіндексована. Якби ви робили коміт зараз, заголовки не було б збережено у репозиторій.
Давайте це перевіримо.
05 Коміт
Зробіть коміт проіндексованих змін (значення за замовчуванням), а потім ще раз перевірте стан.
Виконайте
git commit -m "Added standard HTML page tags"
git status
Ви побачите:
Результат
$ git commit -m "Added standard HTML page tags"
[main 46afaff] Added standard HTML page tags
1 file changed, 5 insertions(+), 1 deletion(-)
$ git status
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: hello.html
no changes added to commit (use "git add" and/or "git commit -a")
Команда status
засвідчує, що у файлі hello.html
досі є незбережені зміни, але область підготовки вже порожня.
06 Додайте другу зміну
Тепер додайте другу зміну в індекс, потім перевірте стан за допомогою команд git status
.
Виконайте
git add .
git status
Ми використали поточну директорію (
.
) як аргумент для додавання. Це найкоротший і зручний спосіб додавання всіх змін у поточній директорії. Але оскільки Git додає в індекс все, то не зайвим буде перевірити стан репозиторію перед запускомadd
, просто щоб впевнитися, що ви не додали якийсь файл, що не треба було додавати.Я просто хотів показати вам трюк з
add .
, надалі ми будемо додавати усі файли явно.
Ви побачите:
Результат
$ git add .
$ git status
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: hello.html
Другу зміну було проіндексовано й приготовлено до коміту.
07 Зробіть коміт другої зміни
Виконайте
git commit -m "Added HTML header"
Результат
$ git commit -m "Added HTML header"
[main b7614c1] Added HTML header
1 file changed, 2 insertions(+)