Різниця між ГОЛОВОЮ та господарем


188

Яка різниця між HEADта masterу Git?

Я зробив клон проекту на GitHub і хочу перенести свої зміни у пульт. Але до кого слід підштовхнути?

скріншот

Відповіді:


162

masterє посиланням на кінець гілки. За умовою (і за замовчуванням) це, як правило, основна галузь інтеграції, але цього не повинно бути.

HEADнасправді є спеціальним типом посилання, що вказує на іншу посилання. Він може вказувати master або не може (він вказуватиме на ту, яку галузь зараз перевірено). Якщо ви знаєте, що хочете взяти участь у masterвідділенні, тоді натисніть на це.

Ось наочний приклад:

alt текст

У власному сховищі ви можете перевірити, куди HEADвказує, запустивши це:

$ git symbolic-ref HEAD
refs/heads/master

Однак дізнатися, куди remotes/origin/HEADвказують, є більш складним, оскільки він знаходиться на віддаленій машині.

Тут є чудовий підручник з посилань на git:

http://people.gnome.org/~federico/news-2008-11.html#pushing-and-pulling-with-git-1


1
+1 Точніша відповідь, ніж моя. Дивіться також stackoverflow.com/questions/3301956/… та stackoverflow.com/questions/3301956/… для ілюстрацій навколо цих понять.
VonC

37

Проста відповідь полягає в тому, що HEADце вказівник / мітка на останню фіксацію гілки, на якій ви зараз перебуваєте. master- це гілка за замовчуванням, створена під час ініціалізації сховища git (наприклад, git init).

Ви можете видалити masterгілку (наприклад git branch -D master). Ви не можете видалити HEADпокажчик.


6
" HEAD- це вказівник / мітка на останню комісію гілки, на якій ви зараз перебуваєте." Я думаю, що це в кращому випадку вводить в оману. Якщо ви перевірите старішу комісію, то HEAD тепер є вказівником на цю старішу комісію, а не на останню. Правильно?
LarsH

2
Ви праві. HEAD - це ваша остання каса. Але на мій захист, для Git checkoutкоманда є рівнозначною для перемикання гілок в інших поширених системах SCM.
benhorgen

1
Я співчуваю ... Я міг легко зробити таку ж помилку. Єдина причина, яку я помітив, - це те, що я перебуваю на стадії намагання дослідити, що НАТО насправді означає. Будь-який шанс ви могли змінити свою відповідь правильною? Я вважаю, що HEAD є складною концепцією, щоб знайти точні описи, як для git не експертів, як я. А порада в Інтернеті, яка дає неправильну інформацію про HEAD, робить це трохи складніше.
LarsH

2
Я думаю, що ваш коментар - це фантастичне уточнення для тих, хто прагне до більш чіткого розуміння того, що HEADнасправді є вказівником Git . Я ціную ваш коментар і думаю, що і інші теж. Вміст моєї оригінальної публікації, а також ваш коментар щодо подальшого доповнення доповнюють один одного. Дякую.
benhorgen

4
Технічний стан, але якщо ви скасуєте старіші зобов’язання, ви більше не "на" відділенні. Якщо ви оформили комісію замість гілки, у вас є те, що називається "відокремлена голова", ви більше не "на гілці". Бути "на гілці" означає, що ваша ГОЛАД посилається на гілку, і за визначенням ви перебуваєте на останньому комітеті цієї гілки. Тільки тому, що ви перевірили команду "b54fe7", і майстер вказує на цю фіксацію, не означає, що ви перебуваєте на головній гілці. Може бути декілька гілок, що вказують на один і той же фіксатор, ви "на" той, на який вказує HEAD, якщо такий є.
Джейсон Джеймз

8

Просто натисніть на зміни своєї поточної гілки

git push origin

і це підштовхне вашу філію " B" зміни до " origin/B".
Якщо ви знаходитесь у своїй masterгілці, git підштовхнеться до origin/master.
Насправді це призведе до зміни всіх локальних гілок, які мають відповідні віддалені гілки origin. Це управляється конфігураційним налаштуванням push.default .
Дивіться також про натискання RefSpecs в книзі Pro Git .


Те , що ви бачите , це бічна панель , що представляє всі refspecs ваших віддалених репо в експериментальній GitX вилці з проекту GitX .

alt текст

HEADПозначатиме гілка за замовчуванням для цього пульта дистанційного керування.
Переглянути git remote set-headсторінку чоловіка :

Мати гілку за замовчуванням для віддаленого пристрою не потрібно, але дозволяє вказати ім'я віддаленого замість конкретної гілки.
Наприклад, якщо для гілки за замовчуванням originвстановлено значення master, то ви originможете вказати, де б ви зазвичай не вказали origin/master.

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