Що означають ці слова у Git: сховище, вилка, гілка, клон, трек?


130

Мені тут чесно не зрозуміло семантики. Вони все стосуються копій / варіантів блоку коду + історії, але минуле, я не впевнений, що міг би сказати. Чи десь пояснена ця логічна структура?


5
Я рекомендую прочитати перші кілька розділів книги Pro Git ( progit.org/book ).
ewall

61
+1. Багато навчальних посібників з git показують, як виконувати певні завдання, не пояснюючи, що означають певні слова чи як працює git. Просити ресурс, який стосується цієї теми, є законним питанням.
Даніель Штуцбах

14
Хочеться, щоб я міг оцінити коментар Даніеля більше. Хоча значення деяких термінів (наприклад, сховища) повинно бути очевидним, їх взаємозв'язок не завжди (гілка проти вилки), і справжнє значення легко неправильно трактується тим, хто звик до централізованого VCS. Крім того, подивіться на "Що таке гілка" Pro Git розділ - чи дійсно основний користувач хоче знати про краплі та дерева, чи вони просто хочуть якісно знати, що таке гілка?
Каскабель

1
@DanielStutzbach можна подавати коментарі про речі, які не зрозумілі в книзі. (Я не знаю правильної термінології, щоб це сказати.) Я зробив це, я сказав, що в книзі потрібно визначити, що таке сховище. Я погоджуюся, що досить важко отримати концептуальний матеріал від людей, які щось дуже добре розуміють. Ця книга (зараз) розповідає про бази даних, не визначаючи, що вони знаходяться в цьому контексті, і нічого не говорить про те, що таке сховища.
користувач34660

Відповіді:


146

Сховище - це просто місце, де зберігається історія вашої роботи. Він часто знаходиться у .gitпідкаталозі вашої робочої копії - копії останнього стану файлів, над якими ви працюєте.

Щоб роздрібнити проект (візьміть джерело з чийогось сховища в певний момент часу і застосуйте до нього власні розбіжні зміни), ви б клонували віддалене сховище, щоб створити його копію, а потім зробите свою власну роботу у вашому локальному сховищі та вчинити зміни.

У сховищі у вас є гілки, які фактично вилки у вашому власному сховищі. Ваші гілки матимуть зобов’язання предків у вашому сховищі, і вони будуть відрізнятися від цього зобов'язання зі своїми змінами. Пізніше ви можете об'єднати зміни вашої філії. Гілки дозволяють працювати над кількома різними функціями одночасно.

Ви також можете відстежувати окремі гілки у віддалених сховищах. Це дозволяє витягувати зміни з гілок іншої людини та об’єднувати їх у власну гілку. Це може бути корисно, якщо ви та друг працюєте над новою функцією разом.

В Інтернеті є багато чудових книг про git. Погляньте на ProGit та Git Magic, щоб розпочати роботу, а також офіційні підручники та загальнодоступні книги.


Звичайно, читання посібників та навчальних посібників є основним. Але це мені здається чудовим підсумком всього матеріалу. Цінується!
brasofilo

Зауважте, що ви можете переключити свій локальний робочий каталог на нову гілку ("git checkout <new_branch>"). У цьому випадку файли вашого локального робочого каталогу ЗАМОВАються вмістом гілки, на яку ви переходите. Але ви не втрачаєте свою роботу: Git зберігає всі внесені зміни ("git commit"), зроблені у попередній гілці в "базі даних" Git (прихована .git папка), і дозволить вам перемикати назад свої файли.
KrisWebDev

3
Я думаю, що це потребує особливої ​​згадки, що історично, незалежно від того, який VCS ви використовували, роздвоєння та розгалуження вважалися двома окремими речами. Відгалуження вважалося сприятливою і мається на увазі угодою між розробниками. Форкінг був більш серйозним, оскільки мав на увазі, що розробники, які працюють над проектом, не погодилися на деякі речі і вирішили розлучитися. Потім успішні вилки зазвичай були об'єднані назад в один проект пізніше після того, як обидві сторони дійшли згоди. З того часу Git (і GitHub) розмивали ці терміни, і обидва терміни в основному представляють одну і ту ж ідею, але по-різному.
redteam316

Отже, у сховищі немає файлів для проекту в ньому? Ви кажете місце, де зберігається історія вашої роботи . Це все? Просто історія файлів, але не самі файли?
користувач34660

13

Я збираюся відповісти на власне запитання з RTFM.

Але прочитайте цей чудовий посібник. Як стверджує автор:

«З цього випливаю висновок, що ви можете реально використовувати Git, лише якщо зрозумієте, як працює Git. Просто запам’ятовування, які команди слід виконувати, у який час працюватимуть у короткостроковому періоді, але лише питання часу, коли ви застрягнете або, що ще гірше, щось зламаєте.

"Половина існуючих ресурсів на Git, на жаль, використовується саме таким підходом: вони проходять вас, через які команди виконуватись, і очікують, що вам слід добре виконати, якщо ви просто імітуєте ці команди. Друга половина все-таки проходить всі концепції, але з того, що я бачив, вони пояснюють Git таким чином, що передбачає, що ти вже розумієш, як працює Git. "


Здається, цей вступ переміщено на sbf5.com/~cduan/technical/git . Оригінальна URL-адреса досі працює.
Ерік Андерсон

1
Це вірно в контексті. Якщо вам потрібно бути продуктивним відразу або дійсно просто зареєструвати код, добре не мати глибокого розуміння того, як працює git. Підручники чудово. Ось як я потрапив у git. Однак, якщо або коли вам потрібно вдосконалитись, як створити гілки, форк, ребайз та інші більш досконалі завдання, то ви повинні знати, як працює git, особливо якщо ви перебуваєте в централізованому контролі джерела.
Філ

3

Цей GoogleTechTalk - це фантастичне вступ до Git, щоб дізнатися, що насправді відбувається за лаштунками, а також вивчити мову. Його висловив дуже ранній вкладник у Git, і він виступив із цим розмовою у 2007 році як спосіб впровадження у Git. Якщо ви дивитеся цю розмову, ви не тільки будете знати, що таке кожне слово, як сховище, виделка, гілка тощо, але ви також будете знати, що відбувається за лаштунками, коли кожне з них робиться, об'єднується тощо.

Адреса довга, але дуже інформативна. Він також протиставляє Git іншим системам управління версіями, тому ви отримуєте уявлення про те, чому Git створений таким, яким він був, і які його порівняльні переваги в порівнянні з іншими системами управління. Хоча розмова стара, дуже корисно вставати і бігати. Я спостерігав би за цим, перш ніж заскочив у посібники. В результаті, речі будуть мати набагато більше сенсу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.