You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<p>Ви повинні відчувати себе вільно при використанні Git як клієнта для інших систем контролю версій, чи імпортуючи будь-який із вже створених репозиторіїв у систему Git без втрати даних.
24
+
Далі ми розглянемо внутрішню механіку системи Git, відтак ви зможете контролювати кожен байт даних, якщо це буде необхідно.</p>
<p>Можливо, ви перейшли сюди після одного з перших розділів, а може й після послідовного вивчення всієї книжки до цього місця — у будь-якому разі, саме тут ми перейдемо до внутрішніх процесів та реалізації Git.
22
+
Ми дійшли висновку, що розуміння цієї інформації було принципово важливим для усвідомлення того, наскільки Git є корисним та потужним, та інші сперечалися з нами, кажучи, що це може збивати з пантелику початківців та бути для них надміру складним.
23
+
Тому ми зробили це обговорення останнім розділом книги, щоб рано чи пізно ви могли прочитати його під час навчального процесу.
24
+
Лишаємо це на ваш розсуд.</p><p>А тепер, розпочнімо.
25
+
По-перше, якщо це досі не стало зрозумілим, Git — контентно-адресована (асоціативна) файлова система із надбудовою у вигляді користувацького інтерфейсу СКВ.
26
+
За мить ви дізнаєтеся більше про те, що це одначає.</p><p>У час раннього становлення Git (переважно до версії 1.5), користувацький інтерфейс був значно складнішим, бо він більше підкреслював цю файлову систему, аніж зручність СКВ.
27
+
Протягом останніх кількох років користувацький інтерфейс вдосконалювався і став простим та зрозумілим у використанні; втім, досі зустрічається стереотип щодо раннього інтерфейсу Git, який був складним і тяжким для вивчення.</p><p>Шар асоціативної файлової системи неймовірно крутий, тож ми охопимо його першим у цьому розділі; потім ви дізнаєтеся про механізми передачі та завдання з обслуговування репозиторія, з якими вам можете знадобитися коли-небудь мати справу.</p>
28
+
<h2id="_plumbing_porcelain">Кухонні та парадні команди</h2>
29
+
<divclass="paragraph">
30
+
<p>Ця книга переважно розповідає про використання Git за допомогою близько трьох десятків підкоманд на кшталт <code>checkout</code>, <code>branch</code>, <code>remote</code>.
31
+
Та оскільки Git спершу був більше інструментом для системи керування версіями, ніж повною СКВ з дружнім інтерфейсом, існує купа підкоманд, що здійснюють низькорівневу роботу і були створені для послідовного використання у стилі UNIX або використання у скриптах.
32
+
Ці команди зазвичай називають “кухонними” (англійський термін “plumbing” — трубопровід, сантехніка), а орієнтовані на користувача — “парадними” (англійський термін “porcelain” — порцелянові).</p>
33
+
</div>
34
+
<divclass="paragraph">
35
+
<p>Як ви вже напевно помітили, перші дев’ять розділів книги були присвячені переважно парадним командам.
36
+
У цьому розділі розглядатимуться саме низькорівневі кухонні команди, які дають доступ до внутрішніх процесів Git, та допомогають продемонструвати як і чому Git працює саме так, а не інакше.
37
+
Багато з цих команд призначені не для ручного використання з командного рядка, а є блоками для побудови нових інструментів та користувацьких скриптів.</p>
38
+
</div>
39
+
<divclass="paragraph">
40
+
<p>Коли ви виконуєте <code>git init</code> у новій чи існуючій теці, Git створює теку <code>.git</code>, де знаходиться майже все, що Git зберігає і чим оперує.
41
+
Якщо ви бажаєте зробити резервну копію чи клон свого репозиторія, копіювання лише цієї теки в інше місце дає вам майже все, що необхідно.
42
+
Поточний розділ присвячений вмісту цієї теки.
43
+
Зазвичай щойно створена тека <code>.git</code> має такий вигляд:</p>
44
+
</div>
45
+
<divclass="listingblock">
46
+
<divclass="content">
47
+
<preclass="highlight"><codeclass="language-console" data-lang="console">$ ls -F1
48
+
config
49
+
description
50
+
HEAD
51
+
hooks/
52
+
info/
53
+
objects/
54
+
refs/</code></pre>
55
+
</div>
56
+
</div>
57
+
<divclass="paragraph">
58
+
<p>Залежно від версії Git, там може бути ще щось, та вищенаведений приклад є свіжим репозиторієм — це те, що ви типово бачитимете безпосередньо після виконання <code>git init</code>.
59
+
Файл <code>description</code> використовується тільки програмою GitWeb, не звертайте на нього увагу.
60
+
Файл <code>config</code> містить конфігураційні параметри, специфічні саме для конкретного репозиторія, а в теці <code>info</code> знаходиться файл з глобальними налаштуваннями ігнорування файлів — він дозволяє виключити шляхи, які ви не бажаєте додавати у файл <code>.gitignore</code>.
61
+
Тека <code>hooks</code> містить клієнтські та серверні гаки, які були детальніше розглянуті у розділі <ahref="{{< relurl "book/uk/v2/ch00/_git_hooks" >}}">Гаки (hooks) Git</a>.</p>
62
+
</div>
63
+
<divclass="paragraph">
64
+
<p>Лишилися ще чотири важливі елементи: файли <code>HEAD</code> та (ще не створений) <code>index</code>, і теки <code>objects</code> та <code>refs</code>.
65
+
Це основні складові Git.
66
+
У теці <code>objects</code> зберігається увесь вміст вашої бази даних, тека <code>refs</code> містить вказівники на об’єкти комітів у цих даних (гілки, теґи, віддалені гілки тощо), файл <code>HEAD</code> указує на поточну гілку — на яку ви зараз переключені, а у файлі <code>index</code> зберігається вміст індексу.
67
+
Тепер ми детально розберемося з цими елементами, щоб зрозуміти як працює Git.</p>
0 commit comments