-
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.4 Додаток C: Команди Git - Галуження та зливання
Галуження та зливання
Існує лише жменя команд, які реалізують більшість функціоналу галуження та зливання в Git.
git branch
Команда git branch
насправді є чимось на кшталт інструменту керування гілками.
Вона може виводити список існуючих гілок, створювати нову гілку, вилучати гілки та перейменовувати їх.
Більша частина Галуження в git присвячена команді branch
та використовується впродовж цілого розділу.
Ми спочатку представляємо її в Створення нової гілки, та розглядаємо більшість з решти її функціоналу (надання списку та вилучення) в Управління гілками.
У Відслідковувані гілки ми використовуємо git branch -u
опцію, щоб налаштувати відслідковувану гілку.
Нарешті, ми розглядаємо дещо з того, що вона робить усередині в Посилання Git.
git checkout
Команда git checkout
використовується для переключення гілок та отримання вмісту до вашої робочої директорії.
Ми вперше стикаємось з нею в Переключення гілок разом з командою git branch
.
Ми бачимо як її використати для початку слідкування за гілками за допомогою опції --track
в Відслідковувані гілки.
Ми використовуємо її, щоб повернути конфлікти у файлі за допомогою --conflict=diff3
в Отримання при конфліктах.
Ми ближче розглядаємо її звʼязок з git reset
у Усвідомлення скидання (reset).
Нарешті, ми переходимо до деяких деталей імплементації в HEAD.
git merge
Інструмент git merge
використовується для зливання однієї чи більше гілок до поточної гілки.
Вона потім пересуває поточну гілку до результату злиття.
Команда git merge
була вперше представлена в Основи галуження.
Хоча ми її використовували в різних місцях книги, є лише декілька варіацій команди merge
— зазвичай просто git merge <гілка>
з назвою єдиної гілки, яку ви бажаєте злити.
Ми розглянули як робити зварене злиття (коли Git зливає роботу, проте вдає ніби це просто новий коміт без запису історії гілки, яку ви зливаєте) наприкінці Відкритий проект з форками.
Ми розповіли чимало про процес зливання та цю команду, включно з командою -Xignore-space-change
та опцією --abort
, щоб припинити проблемне зливання в Складне злиття.
Ми дізнались як перевірити підписи перед зливанням, якщо ваш проект використовує підписи GPG у Підписання комітів.
Нарешті, ми дізнались про зливання піддерев у Зливання піддерев.
git mergetool
Команда git mergetool
просто запускає зовнішній помічник зливання у випадку, якщо у вас проблеми зі зливанням у Git.
Ми нашвидку згадуємо її в Основи конфліктів зливання та детально розглядаємо як написати свій власний інструмент для зовнішнього злиття в Зовнішні інструменти зливання (merge) та різниці (diff).
git log
Команда git log
використовується, щоб показати досяжну записану історію проекту, починаючи з останнього відбитку коміту у зворотному порядку.
Типово вона покаже лише історію поточної гілки, проте ви можете надати їй інше чи навіть декілька посилань чи гілок, які треба обійти.
Вона також часто використовується, щоб показати різницю між двома чи більше гілками на рівні комітів.
Ця команда використовується майже в кожному розділі цієї книги, щоб продемонструвати історію проекту.
Ми представляємо команду та доволі глибоко розглядаємо її в Перегляд історії комітів.
Там ми бачимо опції -p
та --stat
, щоб отримати уявлення про впроваджені кожним комітом зміни, а також опції --pretty
та --oneline
для перегляду історії стисліше, разом з деякими простими опціями фільтрації за датою та автором.
У Створення нової гілки ми використовуємо її з опцією --decorate
, щоб легко унаочнити, куди ведуть наші вказівники гілок, а також використовуємо опцію --graph
, щоб побачити, як виглядають галужені історії.
У Маленька закрита команда та Інтервали комітів ми розглядаємо синтаксис branchA..branchB
для використання з командою git log
, щоб побачити які коміти унікальні в гілці відносно іншої гілки.
У Інтервали комітів ми розглядаємо це дуже докладно.
У Журнал зливання та Потрійна крапка ми розглядаємо використання формату branchA…branchB
та синтаксису --left-right
для перегляду того, що є в одній з гілок, проте не в них обох.
У Журнал зливання ми також дивимось, як використати опцію --merge
, щоб допомогти з дослідженням конфліктів злиття, а також опцію --cc
, щоб бачити конфлікти комітів злиття у вашій історії.
У Скорочення reflog (журнал посилань) ми використовуємо опцію -g
, щоб переглянути журнал посилань Git за допомогою цього інструменту замість обходу гілки.
У Пошук ми бачимо використання опцій -S
та -L
для доволі витончених пошуків чогось, що сталось колись у коді, наприклад, щоб побачити історію функції.
У Підписання комітів ми бачимо, як використати --show-signature
, щоб додати перевірочний рядок до кожного коміту у виводі git log
, в залежності від того, правильно його підписано чи ні.
git stash
Команда git stash
використовується для тимчасового збереження роботи поза комітом, щоб очистити робочу директорії без необхідності створювати коміт з незавершеною роботою в гілці.
Вона повністю розглянута в Ховання та чищення.
git tag
Команда git tag
використовується, щоб створити сталу закладку на окремий момент в історії коду.
Зазвичай, це використовується для речей, на кшталт видань (release).
Ця команда представлена та детально розглянута в Теґування, та ми використовуємо її на практиці в Теґування ваших видань (release).
Ми також розглядаємо, як створити підписаний GPG теґ за допомогою опції -s
та перевіряємо підпис за допомогою опції -v
у Підписання праці.