-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy path03s-using-github.md.erb
executable file
·140 lines (82 loc) · 11.7 KB
/
03s-using-github.md.erb
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
129
130
131
132
133
134
135
136
137
138
139
140
---
title: Використання Git та GitHub
slug: github
date: 0003/01/02
number: 3.5
contents: Вивчите сервіс GitHub, щоб надалі розуміти книгу.
paragraphs: 33
---
[GitHub](https://github.com/) – це соціальний репозиторій для проектів з відкритим вихідним кодом, що базуються на систему контролю вихідного коду [Git](http://git-scm.com/). Головне завдання GitHub - зробити процес розробки простим і пристосувати його до одночасної роботи над ним декількох людей. Також це чудовий прилад для навчання. У цьому розділі ми пробіжимося шляхами застосування GitHub, щоб вам було легше стежити за розвитком подій у *Discover Meteor*.
Цей розділ для тих, хто малознайомий або зовсім не знайомий з Git i GitHub. Якщо ви вже з ними на "ти" – можете сміливо пропускати цей розділ!!
### Комміти
Базовою робочою цеглинкою git репозиторію є *комміт* (commit). Його можна представити як фотознімок всього вашого коду в окремий момент часу.
Замість того, щоб просто дати вам закінчений код для Microscope, ми робили знімки коду на кожному кроці, всі вони доступні онлайн на GitHub.
Наприклад, ось так виглядає [останній комміт попереднього розділу](https://github.com/DiscoverMeteor/Microscope/commit/chapter3-2):
<%= screenshot "s3-1", "A Git commit as shown on GitHub." %>
Ви бачите тут “diff” (від слова "difference" – "різниця") файлу `post_item.js`, іншими словами це зміни, які відбулися з цим файлом в результаті останнього комміту. У нашому випадку ми створили файл `post_item.js` з чистого аркуша, тому увесь його вміст підсвічено зеленим.
Порівняймо ще з одним прикладом із [наступних розділів книги](https://github.com/DiscoverMeteor/Microscope/commit/chapter13-1):
<%= screenshot "s3-2", "Modifying code." %>
На цей раз зеленим підсвічені лише змінені рядки коду.
Іноді ви не тільки додаєте або змінюєте рядки коду, але і [видаляєте їх](https://github.com/DiscoverMeteor/Microscope/commit/chapter12-2):
<%= screenshot "s3-3", "Deleting code." %>
Отож, ми щойно познайомилися з одним з засобів використання GitHub – легким переглядом в ньому змін.
### Огляд коду у комміті
Git Комміт показує тільки зміни в коді, але іноді вам захочеться подивитися на файли, які *не* змінилися, просто щоб упевнитися як їх код повинен виглядати на данному етапі.
GitHub допоможе нам і в цьому. Коли ви перебуваєте на сторінці коммітів, натисніть на **Огляд коду**:
<%= screenshot "s3-5", "The Browse code button." %>
Тепер у вас є доступ до репозиторія в такому вигляді, *в якому він був на момент цього комміту*:
<%= screenshot "s3-6", "The repository at commit 3-2." %>
Візуально GitHub не дає нам багато підказок, якщо ми дивимося на комміт, але якщо ви порівняєте його зі "стандартним" головним виглядом, то одразу побачите, що структура файлу відрізняється:
<%= screenshot "s3-7", "The repository at commit 14-2." %>
### Локальний перегляд комміту
Ми тільки що навчились проглядати онлайн увесь код комміту на GitHub. Але що робити, якщо вам потрібно зробити те саме, але локально? Наприклад, вам потрібно повернути додаток в часі до певного комміту, запустити його локально і подивитися як він себе при цьому поведе.
Для цього ми здійснимо наші перші кроки (що ж, принаймні у цій книжці) з утилітою командного рядка `git`. Для початку [упевніться, що у вас встановлений Git](http://git-scm.com/downloads). Потім **клонуйте** (іншими словами, завантажте локальну копію) репозиторію Microscope за допомогою:
~~~bash
$ git clone git@github.com:DiscoverMeteor/Microscope.git github_microscope
~~~
That `github_microscope` наприкінці – це назва локальної директорії, куди буде клоновано репозиторій. Якщо ж у вас і до цього вже була директорія `microscope`, просто оберіть інше ім’я (не обов’язково, щоб воно співпадало з репозиторієм GitHub).
Тепер ми дамо команду `cd`, щоб почати користуватися утилітою командного рядка `git`:
~~~bash
$ cd github_microscope
~~~
Тепер коли ми клонували репозиторій з GitHub, ми завантажили *увесь* код додатка, це означає що ми маємо код фінального додатку останнього комміту.
На щастя, ми можемо перейти у часі на момент певного комміту, не впливаючи при цьому на всі інші комміти. Давайте спробуємо:
~~~bash
$ git checkout chapter3-1
Note: checking out 'chapter3-1'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b new_branch_name
HEAD is now at a004b56... Added basic posts list template and static data.
~~~
Git повідомляє нам, що ми у режимі "detached HEAD", це означає, що з точки зору Git ми можемо проглядати минулі комміти, але при цьому не змінюючи їх. Це можна порівняти з чарівником, який дивиться на минуле крізь кришталеву кулю.
(Зверніть увагу що у Git також є команди, які дозволяють *змінювати* минулі комміти. Це буде приблизно так само, якщо мандрівник у часі відправляється у минуле і наступає на метелика. Але це не входить у рамки цього короткого вступу).
Причина, по якій ми могли безпосередньо ввести `chapter3-1`, є та, що ми попередньо затегували усі комміти Microscope правильними закладками з назвами розділів. Якби цього не було зроблено, вам довелося б дізнатися про *hash** комміти – унікальний розпізнавальний рядок.
Знову ж таки, GitHub робить наше життя простішим. Ви можете знайти хеш комміти у нижньому правому куту синього заголовку, як показано на скріншоті:
<%= screenshot "s3-4", "Finding a commit hash." %>
Спробуємо це зробити з хешом замість тега:
~~~bash
$ git checkout c7af59e425cd4e17c20cf99e51c8cd78f82c9932
Previous HEAD position was a004b56... Added basic posts list template and static data.
HEAD is now at c7af59e... Augmented the postsList route to take a limit
~~~
І нарешті, що якщо нам потрібно припинити дивитися у кришталеву кулю і повернутися до реальності? Ми повинні повідомити Git, що ми бажаємо відкрити гілку **майстер**:
~~~bash
$ git checkout master
~~~
Зауважимо, що ви також можете у будь-який момент запустити програму за допомогою команди `meteor`, навіть у режимі "detached HEAD". Можливо, вам спочатку доведеться виконати команду `mrt update`, якщо Meteor поскаржиться на відсутність пакету програм, оскільки пакет-код не входить в Git репозиторій Microscope.
### Історична перспектива
Ось ще один схожий випадок: ви переглядаєте файл і помічаєте зміни, які раніше ніколи не бачили. Справа в тому, що ви не можете згадати *коли* цей файл змінили. Ви могли б переглядати комміти один за одним, поки не знайшовся б вірний; проте завдяки кнопці **Історія** на GitHub є простіший спосіб.
Для початку відкрийте один з файлів в репозиторії на GitHub. Потім знайдіть кнопку "Історія":
<%= screenshot "s3-8", "GitHub's History button." %>
Тепер вам доступний список усіх коммітів, які зверталися до цього файлу:
<%= screenshot "s3-9", "Displaying a file's history." %>
### Хто винен?
Наостанок звернімо увагу на кнопку **Blame**:
<%= screenshot "s3-10", "GitHub's Blame button." %>
Це вікно показує нам, хто змінив кожну лінію файлу, а також комміт, частиною якого є ця зміна (іншими словами – хто винен у тому, що код більше не працює):
<%= screenshot "s3-11", "GitHub's Blame view." %>
Git доволі складний інструмент – так само як і GitHub, тому ми навіть не намагаємося охопити все в рамках одного розділу. Насправді, ми ледь торкнулися того, що можливо за допомогою цих інструментів. Але сподіваємося, що навіть ця стисла інформація допоможе вам при подальшому читанні цієї книги.