-
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 Кухонні команди
A1.1 Додаток A: Git в інших середовищах - Графічні інтерфейси
Якщо ви прочитали всю книгу, то чимало дізнались про використання Git з командного рядка. Ви можете працювати з локальними файлами, зʼєднуватись з вашим сховищем чи з іншими через мережу, та працювати з іншими ефективно. Проте казка тут не закінчується; Git зазвичай використовується як частина більшої екосистеми, і термінал не завжди найкращий спосіб з ним працювати. Тепер ми поглянемо на декілька інших типів середовищ, в яких Git може бути корисним, та як інші застосунки (включно з вашими) можуть працювати з Git.
Графічні інтерфейси
Природне середовище Git — це термінал. Спочатку новий функціонал буде зʼявлятися там, і лише з командного рядка вам доступна вся повнота влади Git. Проте простий текст не є найкращим вибором для всіх завдань; іноді вам потрібне саме візуальне відображення, а деяким користувачам набагато зручніше використовувати інтерфейс навів-та-клацнув.
Важливо зазначити, що різні інтерфейси пристосовані для різних процесів роботи. Деякі клієнти надають лише ретельно відібрану підмножину функціоналу Git, аби підтримати окремий спосіб праці, який автор вважає ефективним. Якщо розглядати під цим кутом, жоден з цих інструментів не можна назвати “кращим” за будь-який інший: вони просто більш підходять для свого призначення. Також зауважте, що не існує нічого, що могли б зробити ці графічні клієнти, чого не може клієнт командного рядка; все одно з командного рядка у вас буде найбільше можливостей та контролю для роботи з вашими репозиторіями.
gitk
та git-gui
Коли ви встановлюєте Git, ви також отримуєте його візуальні інструменти, gitk
та git-gui
.
gitk
— це графічний переглядач історії.
Вважайте його здібною обгорткою над git log
та git grep
.
Її варто використовувати, коли ви намагаєтесь знайти щось, що сталося в минулому, або для візуалізації історії вашого проекту.
Gitk найлегше викликати з командного рядка. Просто перейдіть до вашого репозиторія Git (cd), та наберіть:
$ gitk [git log options]
Gitk приймає багато опцій командного рядка, більшість з яких передається далі до git log
.
Напевно однією з найкорисніших є опція --all
, яка каже gitk показувати коміти, які досяжні з будь-якого посилання, а не лише HEAD.
Інтерфейс gitk виглядає так:
![Переглядач історії `gitk`.](png/gitk.png)
gitk
.Нагорі розташовано щось трохи схоже на результат git log --graph
; кожна точка відповідає коміту, лінії відповідають батьківським звʼязкам, а посилання показані кольоровими блоками.
Жовта точка відповідає HEAD, а червона — зміни, які ще не збережені в коміті.
Знизу розташовано перегляд вибраного коміту; коментарі та латка ліворуч, а стислий підсумок — праворуч.
Між ними колекція елементів керування для пошуку в історії.
git-gui
, з іншого боку, переважно є інструментом для доопрацювання комітів.
Його теж найлегше викликати з командного рядка:
$ git gui
А виглядає він так:
![Інструмент для створення комітів `git-gui`.](png/git-gui.png)
git-gui
.Ліворуч знаходиться індекс; неіндексовані зміни — нагорі, а індексовані — знизу. Ви можете переміщувати файли цілком між двома станами, якщо клацнете на їхніх іконках, або можете вибрати файл для перегляду, якщо клацнете на його назві.
Нагорі праворуч розташовано відображення різниці, яке показує зміни в наразі вибраному файлі. Ви можете індексувати окремі клаптики (або окремі рядки), якщо клацнете в цій області правою кнопкою.
Знизу праворуч розташовано повідомлення та область дій.
Наберіть своє повідомлення до текстового поля та клацніть “Commit”, щоб зробити щось схоже на git commit
.
Ви також можете виправити останній коміт, якщо виберете перемикач “Amend”, який оновить область “Staged Changes” (індексовані зміни) вмістом останнього коміту.
Потім ви можете просто індексувати чи деіндексувати деякі зміни, змінювати повідомлення коміту, та клацнути на “Commit” знову, щоб замінити старий коміт новим.
gitk
та git-gui
— це приклади інструментів, що орієнтовані на конкретні задачі.
Кожен з них створено для окремої мети (відображати історію та створювати коміти відповідно), та не включають функціонал, який не є необхідним для цих завдань.
GitHub для Mac та Windows
GitHub створив два орієнтованих на свій процес роботи клієнтів: один для Windows, інший для Mac. Ці клієнти — гарний приклад орієнтованих на процес роботи інструментів – замість того, щоб надавати весь функціонал Git, вони зосереджуються на ретельно вибраному широковживаному функціоналі, який добре працює разом. Вони виглядають так:
![GitHub для Mac.](png/github_mac.png)
![GitHub для Windows.](png/github_win.png)
Вони не спроектовані для того, щоб виглядати та працювати дуже схожим чином, отже ми розглянемо їх як одну програму в цьому розділі. Ми не збираємось детально розглядати ці інструменти (вони мають свою власну документацію), проте вас очікує швидкий огляд вікна “зміни (changes)” (в якому ви проводитимете більшість свого часу).
-
Ліворуч розташовано список сховищ, за якими слідкує клієнт; ви можете додати репозиторій (або клонуванням, або додаванням локального), якщо клацнете на іконку “+” нагорі цієї області.
-
У центрі є область для вводу комітів, яка дозволяє вам ввести повідомлення коміту, та вибрати, які файли треба включити. (На Windows, історія комітів відображається прямо під цим; на Mac, це окрема вкладка.)
-
Праворуч є відображення різниці, яка показує що змінилося у вашій робочій директорій, або які зміни включено у вибраний коміт.
-
Наостанок зверніть увагу на кнопку “Sync” нагорі праворуч, за допомогою якої ви переважно взаємодієте з мережею.
Зауваження
|
Вам не потрібен обліковий запис GitHub для використання цих інструментів. Хоча вони створені для розповсюдження сервісу GitHub та рекомендованого процесу роботи, вони пречудово працюють з будь-яким сховищем, та виконують мережеві операції з будь-яким Git сервером. |
Встановлення
GitHub для Windows можна завантажити з https://windows.github.com, а GitHub для Mac з https://mac.github.com. Коли ви вперше виконуєте ці застосунки, вони допомагають вам з першим налаштуванням Git, наприклад конфігурацією вашого імені й поштової адреси, а також налаштовують розумні типові значення для багатьох поширених опцій, на кшталт пам’яті для посвідчень та поведінки CRLF.
Обидві “вічнозелені” – оновлення завантажуються та встановлюються у фоні, доки застосунки працюють. Це також включає в поставку версію Git, що означає, що вам, непевно, не доведеться турбувати себе його оновленням вручну. На Windows, клієнт включає поєднання клавіш для запуску Powershell з Posh-git, про яке ми поговоримо пізніше в цьому розділі.
Далі треба надати інструменту якісь репозиторії для роботи. Клієнт показує вам список сховищ, до яких у вас є доступ на GitHub, та може зробити їх клон за один крок. Якщо ви вже маєте локальний репозиторій, просто перетягніть його директорію з Finder чи Windows Explorer до клієнтського вікна GitHub, та його буде включно до списку репозиторіїв ліворуч.
Рекомендований процес роботи
Щойно все встановлено та налаштовано, ви можете використати клієнт GitHub для різноманітних поширених завдань Git. Цей інструмент має на меті процес роботи, який інколи називають “GitHub Flow.” Ми розглядаємо його докладніше в Потік роботи GitHub, проте загальна суть в тому, що (а) ви створюєте коміти в гілці, та (б) ви синхронізуєтесь з віддаленим сховищем доволі регулярно.
Керування гілками — це одна з речей, в яких ці два інструменти різняться. На Mac, є кнопка нагорі вікна для створення нової гілки:
![Кнопка ``Створити гілку'' (create branch) на Mac.](png/branch_widget_mac.png)
На Windows, це можна зробити, якщо набрати ім’я нової гілки у віконці переключення гілок:
![Створення гілки на Windows.](png/branch_widget_win.png)
Коли у вас з’являється гілка, створювати нові коміти доволі просто. Зробіть якісь зміни в робочій директорії, та коли ви переключитесь до вікна клієнту GitHub, він покаже вам, які файли змінено. Введіть повідомлення коміту, виберіть файли, які ви бажаєте включити, і клацніть на кнопці “Commit” (ctrl-enter або ⌘-enter).
Головний спосіб взаємодії з іншими сховищами через мережу — за допомогою функції “Sync”. Git всередині має окремі операції для надсилання, отримання, зливання та перебазування, проте клієнти GitHub стягують їх усіх до однієї багатокрокової функції. Ось що коїться, коли ви натискаєте на кнопку Sync:
-
git pull --rebase
. Якщо це зазнає невдачі через конфлікт зливання, спробуйтеgit pull --no-rebase
. -
git push
.
Це найбільш розповсюджена послідовність мережевих команд під час роботи в такому стилі, отже об’єднання їх до однієї команди заощаджує багато часу.
Підсумок
Ці інструменти дуже гарно підходять для процесу роботу, для якого їх створено. Розробники та не розробники однаково можуть співпрацювати над проектом за лічені хвилини, та багато з найкращих практик для такого процесу роботи вбудовано в ці інструменти. Втім, якщо ваш процес роботи інший, або ви надаєте перевагу більшому контролю під час виконання мережевих операцій, ми рекомендуємо використовувати інший клієнт або командний рядок.
Інші графічні інтерфейси
Існує чимало інших графічних клієнтів Git, та вони заповнюють гаму від спеціалізованих інструментів з єдиною метою до застосунків, які намагаються вмістити все, що може зробити Git. Офіційний сайт Git має вибірку найпопулярніших клієнтів за адресою http://git-scm.com/downloads/guis. Повніший список можна знайти на сайті вікі Git, за адресою https://git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools#Graphical_Interfaces.