Які поняття git HEAD, master, походження?


197

Коли я дізнаюся про git, я постійно стикаюся з термінами HEAD, master, origin, і я не впевнений, в чому полягають відмінності. Якщо я правильно розумію, HEAD завжди дорівнює останній редакції? І якщо так, це остання редакція всього сховища чи певної гілки чи тегу? Це так заплутано. Я прочитав так багато підручників з цього приводу та таких речей, як розгалуження / злиття, але все ще не можу обернути голову навколо цього.

Відповіді:


232

Дуже рекомендую книгу Скот Чейкона "Pro Git" . Знайдіть час і по-справжньому прочитайте його, досліджуючи фактичну репо-гіт, як і ви.

HEAD : поточне фіксування, на яке виконується ваше репо Більшу частину часу HEADвказує на останню поступку у вашому поточному відділенні, але це не повинно бути так. HEADнасправді просто означає "на що я зараз вказую".

У випадку, якщо HEADпосилання стосується не кінця будь-якої гілки, це називається "відстороненою головою".

master : назва гілки за замовчуванням, яку git створює для вас під час першого створення репо. У більшості випадків "господар" означає "головну гілку". Більшість магазинів мають всіх, хто підштовхує до майстра, а майстер вважається остаточним видом репо. Але також звичайно, щоб гілки випуску були зняті з майстра для випуску. Ваше місцеве репо має власне відділення, яке майже завжди слідкує за майстром віддаленого репо.

походження : ім'я за замовчуванням, яке git дає вашому головному віддаленому репо. У вашому ящику є власне репо, і ви, швидше за все, переходите до якогось віддаленого репо, на яке ви та всі ваші колеги прагнете. Це віддалене репо майже завжди називають походженням, але цього не повинно бути.

HEADє офіційним поняттям в git. HEADзавжди має чітко визначене значення. masterі originзагальні назви, які зазвичай використовуються в git, але вони не повинні бути.


Що ви маєте на увазі під "HEAD дійсно просто означає", на що зараз вказує моя репо "." Якщо у сховищі є кілька відділень, то яка з вас є ГОЛОВОЮ? якщо є 3 відділення (разом з господарем), і в гілціA було здійснено необхідність вчинення, HEAD все ще може бути в команді "господаря". Отже, на яку ревізію вказує репо зараз?
OK999

2
незрозуміло, що ви маєте на увазі під репо (місцевим або віддаленим). Як правило, у вашій відповіді використовуються вирази, не пояснюючи їх раніше.

Я щойно робив клон у паралельному каталозі, щоб порівняти свою робочу директорію з кінчиком віддаленого репо. Ось так гарні всі відповіді на git.

@JingHe Ви прочитали всю книгу? Чи справді це варто? Я маю на увазі, що ми говоримо про чудернацькі 500 прочитаних сторінок, що здається мені занадто багато ...
Макс

1
Щоб переконатися, що я розумію логіку, я можу викликати гілку у віддаленому режимі як особливістьA, і коли я натискаю на цю гілку, я набираю "функцію походження git pushA". Я можу витягнути те ж саме з пульта, сказавши "функцію походження git pullA", внести зміни. І голова має на увазі лише локальну копію. @ OK999 Я вважаю, що HEAD вказує на ту галузь, яку ви зараз перевіряєте у місцевій місцевості. Якщо фіксація була здійснена у відділенніA, але ви зараз перебуваєте на гілці B, HEAD вказує на гілку B. Ви повинні перемістити HEAD у відділенняA назад, перш ніж виконувати певний вчинок.
TLee

43

HEADце не остання редакція, це поточна редакція. Зазвичай це остання редакція поточної галузі, але вона не повинна бути.

master це назва, яку зазвичай дають головній гілці, але її можна назвати чим-небудь іншим (або не може бути головної гілки).

originце ім'я, яке зазвичай дається головному пульту. remote - це ще одне сховище, з якого можна витягнути та натиснути на нього. Зазвичай він знаходиться на якомусь сервері, наприклад, github.


1
Чи можете ви навести приклад того, коли HEAD поточний, але не останній? Я ніколи цього не бачив. Або ви маєте на увазі, що це може бути не останнє, оскільки ваше відділення знаходиться за віддаленою гілкою, яку він відстежує?
Метт Грір

12
@MattGreer: Якщо ви перевірите щось старіше (наприклад, тег на зразок git checkout v1.1), то ваша HEAD змінюється на фіксацію цього тегу. Це може бути не останнє зобов’язання.
Грег Хьюгілл

8

Хоча це не відповідає безпосередньо на запитання, є чудова книга, доступна безкоштовно, яка допоможе вам засвоїти основи під назвою ProGit . Якщо ви віддаєте перевагу версії з мертвого дерева перед колекцією бітів, ви можете придбати її у Amazon .


9
Питання про книгу не задавали! Мені поки незрозуміло, навіщо мені потрібна книга для git, коли мені не потрібна одна для C ++.

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