-
Notifications
You must be signed in to change notification settings - Fork 0
/
GIT
128 lines (91 loc) · 10.6 KB
/
GIT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
Кожна комп'ютерна програма складається з файлів, які містять певні інструкції. Файлів може бути дуже багато: десятки, сотні або навіть тисячі.
Тому фізично неможливо запам’ятати, що і коли змінювалося в кожному з них. Крім того, над проєктом зазвичай працює декілька розробників,
хтось приєднується, хтось йде. Інколи буває необхідно повернутися до попередньої версії програми чи окремих файлів, наприклад,
через нестабільність або зміну планів. В цій ситуації на допомогу приходить система контролю версій.
Система контролю версій дозволяє контролювати та зберігати історію змін у файлах. І, за потреби, швидко перемикатися між версіями.
Найпопулярнішою системою контролю версій є Git.
Як працює Git
Кожного разу, коли ми зберігаємо зміни, Git створює так званий commit, який містить так звану delta (що було додано або видалено) для змінених файлів.
Кожне таке збереження підписується контрольною хеш сумою (SHA-1), яка розраховується на основі вмісту, повідомлення, автора та часу.
Таким чином, неможливо змінити файл чи директорію так, щоб Git про це не дізнався. Варто зазначити, що Git зберігає всі зміни локально,
тобто лише на пристрої користувача.
А тепер до практики!
Ініціюємо репозиторій та готуємо файли до збереження
Хоч Git і можна вважати супермозком, проте це не штучний інтелект, який самостійно приймає рішення щодо збереження файлів.
Для початку Git потрібно активувати. Директорія, у якій активовано Git, називається репозиторієм. Щоб звичайна директорія стала Git репозиторієм,
у ній повинна бути прихована папка .git. Створити цю папку і, відповідно, активувати Git репозиторій можна за допомогою команди:
git init
Щоб видалити репозиторій, достатньо видалити папку .git.
Усі зміни в репозиторії можна простежити за допомогою команди git status. Ця команда покаже наступне:
Чи активовано репозиторій у поточній директорії.
img1
Чи є файли, які Git ще не відстежує (untracked files) або чи були внесені зміни у файли, які Git відстежує (modified).
Чи є змінені файли, підготовлені до збереження — внесені в індекс (changes to be committed).
img2
Індекс — це файл, який зазвичай знаходиться в директорії Git та містить інформацію про те, що буде збережено в наступному коміті.
Додати файли в індекс (підготувати зміни до збереження) можна:
поодинці для кожного файлу — git add ./path/to/file;
кілька файлів одночасно, прописавши їх назви або ж шлях до файлів через пробіл — git add ./path/to/file ./path/to/file;
усі файли, що знаходяться в певній директорії — git add path/to/folder;
одразу всі файли в поточній директорії — git add.
Нагадаємо, що Git робить «скріншот» рядків, які містяться у файлі на певний момент. Так от, тим моментом є додавання файлу в індекс.
Тобто, якщо у файл, який перебуває в індексі, внести зміни, то ці зміни не потраплять в індекс, їх треба буде додавати знов.
img3
Зверни увагу, що Git «спілкується» з користувачем. Як бачимо із зображення вище, Git пропонує виконати певні команди, щоб рухатись далі.
Якщо треба скасувати зміни, внесені у файл, який ще не додано в індекс, можна виконати команду:
git restore file_name
Якщо файл помилково додано в індекс, слід виконати команду:
git restore --staged file_name
Файл .gitignore
Щоб Git не відстежував певні файли в репозиторії або ж не змінював уже збережені в репозиторії файли,
можна використати прихований файл .gitignore. Його потрібно створити в кореневій директорії репозиторію (на одному рівні з папкою .git) та помістити в нього назви всіх файлів, які Git повинен ігнорувати.
Коміти
Файли, підготовлені до збереження, можна зберегти командою git commit. Після цієї команди відкриється текстовий редактор,
де потрібно буде ввести пояснення до коміту (commit message).
img4
Щоб додати пояснення одразу, можна використати ключ -m:
git commit -m "do something"
Таким чином, за допомогою команд git commit та git commit -m "do something" ми збережемо всі файли, додані до індексу (підготовлені до збереження). Можна уникнути кроку додавання файлів до індексу, вписавши прапорець -a в команду git commit, що означає зберегти всі змінені файли. З прапорцем -а потрібно бути дуже обережними, адже можемо зберегти зайві файли:
git commit -am "do something"
Історія комітів
Кожен коміт зберігається в історії комітів. Щоб вивести її на екран, використай команду git log.
Ця команда показує хеш кожного коміту, ім'я та пошту автора, дату збереження та повідомлення коміту.
З більш детальним описом опцій цієї команди можна ознайомитись у документі Viewing the Commit History. Щоб зробити історію комітів більш читабельною,
можна використати аліас, про що ми поговоримо далі.
Перемикатися між збереженнями можна за допомогою гілок або хешу коміту, використовуючи команду git checkout hash-or-branch.
Зазвичай 7 перших символів хешу достатньо, щоб перемикнутися між комітами.
Аліаси
Кожну команду Git можна «перейменувати» чи «скоротити» за допомогою аліасів. Усі аліаси зберігаються в прихованому файлі ~/.gitconfig.
Додати аліас можна командою:
git config –global alias.alias_name command_name
Внести зміни у .gitconfig можна не тільки через командний рядок, але й відкривши цей файл у будь-якому текстовому редакторі.
Ми пропонуємо внести такі зміни у файл .gitconfig:
[user]
name = Your_Name Your_Surname
email = your@email
[alias]
ci = commit
co = checkout
br = branch
st = status
lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --branches
[core]
pager =
editor = nano
Як бачиш, у файлі прописано аліас для команди git log. Цей аліас зробить історію комітів більш читабельною.
Основні команди :
git config --global ... встановити глобальні параметри Git
git init ініціалізувати новий Git репозиторій у поточній директорії
git status показати інформацію про репозиторій
git add ./path/to/files підготувати зміни файлу для збереження
git restore file_name скасувати зміни в модифікованому файлі file_name
git restore --staged file_name видалити файл file_name з індексу
git commit відкрити текстовий редактор, щоб ввести повідомлення для коміту та зберегти зміни в індексі
git commit -m 'do something' зберегти зміни із вказаним повідомленням
git commit -am 'do something' підготувати всі змінені файли та зберегти із вказаним повідомленням
git log показати історію комітів
git lg аліас, який ми створили для log
git branch показати всі гілки
git branch branch_name створити нову гілку branch_name
git branch -D branch_name видалити гілку branch_name
git checkout hash-or-branch перейти на іншу гілку або хеш коміту