-
1. Вступ
- 1.1 Про систему контролю версій
- 1.2 Коротка історія Git
- 1.3 Основи Git
- 1.4 Git, зазвичай, тільки додає дані
- 1.5 Три стани
- 1.6 Командний рядок
- 1.7 Інсталяція Git
- 1.8 Початкове налаштування Git
- 1.9 Отримання допомоги
- 1.10 Підсумок
-
2. Основи Git
- 2.1 Створення Git-репозиторія
- 2.2 Запис змін до репозиторія
- 2.3 Перегляд історії комітів
- 2.4 Скасування речей
- 2.5 Взаємодія з віддаленими сховищами
- 2.6 Теґування
- 2.7 Псевдоніми Git
- 2.8 Підсумок
-
3. Галуження в git
- 3.1 Гілки у кількох словах
- 3.2 Основи галуження та зливання
- 3.3 Управління гілками
- 3.4 Процеси роботи з гілками
- 3.5 Віддалені гілки
- 3.6 Перебазовування
- 3.7 Підсумок
-
4. Git на сервері
- 4.1 Протоколи
- 4.2 Отримання Git на сервері
- 4.3 Генерація вашого публічного ключа SSH
- 4.4 Налаштування Серверу
- 4.5 Демон Git
- 4.6 Розумний HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Варіанти стороннього хостингу
- 4.10 Підсумок
-
5. Розподілений Git
-
6. GitHub
-
7. Інструменти Git
- 7.1 Вибір ревізій
- 7.2 Інтерактивне індексування
- 7.3 Ховання та чищення
- 7.4 Підписання праці
- 7.5 Пошук
- 7.6 Переписування історії
- 7.7 Усвідомлення скидання (reset)
- 7.8 Складне злиття
- 7.9 Rerere
- 7.10 Зневадження з Git
- 7.11 Підмодулі
- 7.12 Пакування
- 7.13 Заміна
- 7.14 Збереження посвідчення (credential)
- 7.15 Підсумок
-
8. Налаштування Git
-
9. Git and Other Systems
- 9.1 Git як клієнт
- 9.2 Міграція на Git
- 9.3 Підсумок
-
10. Git зсередини
- 10.1 Кухонні та парадні команди
- 10.2 Об’єкти Git
- 10.3 Посилання Git
- 10.4 Файли пакунки
- 10.5 Специфікація посилань (refspec)
- 10.6 Протоколи передачі
- 10.7 Супроводження та відновлення даних
- 10.8 Змінні середовища
- 10.9 Підсумок
-
A1. Додаток A: Git в інших середовищах
- A1.1 Графічні інтерфейси
- A1.2 Git у Visual Studio
- A1.3 Git в Eclipse
- A1.4 Git у Bash
- A1.5 Git у Zsh
- A1.6 Git у Powershell
- A1.7 Підсумок
-
A2. Додаток B: Вбудовування Git у ваші застосунки
- A2.1 Git з командного рядка
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
-
A3. Додаток C: Команди Git
- A3.1 Налаштування та конфігурація
- A3.2 Отримання та створення проектів
- A3.3 Базове збереження відбитків
- A3.4 Галуження та зливання
- A3.5 Поширення й оновлення проектів
- A3.6 Огляд та порівняння
- A3.7 Зневаджування
- A3.8 Латання (patching)
- A3.9 Електронна пошта
- A3.10 Зовнішні системи
- A3.11 Адміністрування
- A3.12 Кухонні команди
A3.3 Додаток C: Команди Git - Базове збереження відбитків
Базове збереження відбитків
Для базового процесу роботи індексування вмісту та збереження його в комітах вашої історії, є лише декілька базових команд.
git add
Команда git add
додає вміст з робочої директорії до індексу (чи області додавання) для наступного коміту.
Коли виконується команда git commit
, типово вона дивиться лише на індекс, отже git add
використовується для підготовки того, яким саме ви бажаєте зробити наступний відбиток коміту.
Ця команда неймовірно важлива в Git і згадується та використовується десятки разів у цій книзі. Ми швидко розглянемо деякі особливі використання, які можна знайти.
Спершу ми представляємо та пояснюємо докладно git add
у Контролювання нових файлів.
Ми згадуємо, як використати її для розвʼязання конфліктів у Основи конфліктів зливання.
Ми розглядаємо її використання для інтерактивного додавання лише окремих частин редагованих файлів у Інтерактивне індексування.
Нарешті, ми емулюємо її на низькому рівні в Об’єкти дерева, щоб ви могли уявити, що виконується за кулісами.
git status
Команда git status
покаже вам різні стани файлів у вашій робочій директорії та індексі.
Які файли змінені, проте не в індексі, а які індексовані, проте досі не збережені в коміті.
У звичайній формі, вона також покаже вам деякі базові підказки щодо переміщення файлів між цими станами.
Спочатку ми розглядаємо status
у Перевірка статусу ваших файлів, як базову, як і спрощену форми.
Хоча ми використовуємо її впродовж книги, дійсно все, що ви можете робити за допомогою команди git status
розглянуто там.
git diff
Команда git diff
використовується, коли ви бажаєте побачити різницю між якимись двома деревами.
Це може бути різниця між вашим робочим середовищем та індексом (просто git diff
), між вашим індексом та останнім комітом (git diff --staged
), або між двома комітами (git diff master branchB
).
Ми вперше бачимо базове використання git diff
у Перегляд ваших доданих та недоданих змін, де ми показуємо, як дізнатись, які зміни індексовані, а які ще ні.
Ми використовуємо її, щоб побачити можливі проблеми з пробільними символами перед створенням коміту за допомогою опції --check
у Правила щодо комітів.
Ми бачимо як перевірити різницю між гілками ефективніше за допомогою синтаксису git diff A...B
у Як дізнатися, що додано.
Ми дізнаємось, як ігнорувати різницю в пробільних символах за допомогою -b
та як порівняти стани конфліктних файлів за допомогою --theirs
, --ours
та --base
у Складне злиття.
Нарешті, ми використовуємо її для ефективного порівняння змін у підмодулях за допомогою --submodule
у Основи підмодулів.
git difftool
Команда git difftool
просто запускає зовнішній інструмент, щоб показати вам різницю між двома гілками у випадку, якщо ви бажаєте використати щось інше, ніж вбудовану команду git diff
.
Ми лише коротко згадуємо про це в Перегляд ваших доданих та недоданих змін.
git commit
Команда git commit
бере вміст всіх файлів, які ви індексували командою git add
, та записує новий сталий відбиток до бази даних, а потім пересуває вказівник поточної гілки до нього.
Спочатку ми розглядаємо базове створення комітів у Збереження ваших змін у комітах.
Там ми також демонструємо використання опції -a
для пропуску кроку git add
у щоденних процесах роботи, та як використати опцію -m
, щоб передати повідомлення коміту з командного рядка замість запуску редактора.
У Скасування речей ми розглядаємо використання опції --amend
для переробки останнього коміту.
У Гілки у кількох словах, ми набагато детальніше розглядаємо, що робить git commit
та чому він це робить таким чином.
Ми бачили як підписувати коміти криптографічно за допомогою опції -S
у Підписання комітів.
Нарешті, ми поглянули на те, що робить команда git commit
у фоні та як вона насправді реалізована в Об’єкти комітів.
git reset
Команда git reset
переважно використовується для скасування речей, як ви напевно можете здогадатись через дієслово reset
.
Вона переміщує вказівник HEAD
, а також може змінити індекс (область додавання) та може змінити робочу директорію, якщо ви використаєте --hard
.
Ця остання опція робить можливим втрату вашої праці через цю команду, якщо використати її неправильно, отже переконайтесь, що ви розумієте її перед використанням.
Ми спочатку розглядаємо найпростіше використання git reset
в Вилучання файла з індексу, де ми використовуємо її для деіндексації файлу, на якому ми були виконали git add
.
Ми потім розглядаємо її доволі детально в Усвідомлення скидання (reset), яка повністю присвячена поясненню цієї команди.
Ми використовуємо git reset --hard
для скасування злиття у Припинення злиття, де ми також використовуємо git merge --abort
, яка в деякій мірі є обгорткою для команди git reset
.
git rm
Команда git rm
використовується для вилучення файлів з індексу та робочої директорії Git.
Вона схожа на git add
в тому, що індексує вилучення файлу для наступного коміту.
Ми розглядаємо команду git rm
дещо детальніше в Видаляємо файли, включно з рекурсивним вилученням файлів та вилученням лише з індексу, проте залишаючи їх у робочій директорії за допомогою --cached
.
Єдине інше відмінне використання git rm
у книзі є в Вилучення обʼєктів, де ми стисло пояснюємо --ignore-unmatch
при виконанні git filter-branch
, яке просто змушує не вважати помилкою відсутність файлу під час спроби його вилучити.
Це може бути корисним для написання скриптів.
git mv
Команда git mv
є маленькою зручною командою, яка переміщує файл, виконує git add
для нового файлу та git rm
для старого.
Ми лише мимохідь згадуємо цю команду в Пересування файлів.
git clean
Команда git clean
використовується для вилучення небажаних файлів з вашої робочої директорії.
Це може включати вилучення тимчасових результатів збірки, чи файлів конфлікту злиття.
Ми розглядаємо багато опцій та випадків, в яких ви можете використати команду clean у Очищення робочої директорії.