потяните дерево с его SHA - PullRequest
0 голосов
/ 09 января 2019

Я изо всех сил пытаюсь выучить Git, GitHub и застрял здесь. Я хочу получить коммит из этого дерева (он выглядит примерно так, как этот Github), он находится на удаленном апстриме и имеет коммит, который я хочу объединить в моей ветви происхождения. Как вытащить коммит из дерева?

Я видел метки и ветви, но никогда не видел деревьев. что это за деревья?

Ответы [ 2 ]

0 голосов
/ 09 января 2019

TL; DR: использовать коммит, а не дерево.

A tree в Git - это промежуточная структура данных. Если вы не занимаетесь программированием на Git низкого уровня (например, пишете новые команды Git), вам обычно даже не нужно знать, что они существуют. Но, для справки, каждый коммит содержит, или, точнее, относится к или указывает на , один объект дерева. Древовидный объект - это то, как коммит сохраняет полный снимок всех ваших файлов.

Обратите внимание, что имена веток, такие как master, являются просто именами для одного конкретного коммита, со специальной особенностью, что один конкретный коммит, имена которого master будут меняться со временем. Имена тегов, такие как v2.3, являются также именами для одного конкретного коммита с намерением, что имя тега всегда будет называть этот конкретный коммит.

Уровень, на котором вы будете иметь дело с Git, - это commit , но обычно путем написания ветки или имени тега. Это по двум причинам:

  1. Фактические хэш-идентификаторы большие, некрасивые и кажутся случайными. Они бесполезны для людей.

  2. Как мы только что отметили, идентификатор хэша для ветви имени изменяется с течением времени. В частности, имя ветви идентифицирует последний коммит. Поэтому, если вам нужен последний коммит, вам не нужно знать его большой некрасивый хэш-идентификатор, вам нужно только знать, что все согласны с тем, что имя master содержит этот идентификатор. Если вам нужен коммит для версии 2.3, вам нужно запомнить только имя v2.3.

Каждое имя ветки является локальным для одного конкретного репозитория Git. То есть ваш master - ваш; - это не то же самое, что и у других master. Итак, когда ваш Git-репозиторий вызовет какой-нибудь другой Git-репозиторий, вы узнаете, что такое хэш-идентификатор их master, но это не повлияет на ваш . Допустим, вы присвоили имя susan этому другому хранилищу Git: ваш Git запомнит их master как ваш susan/master.

Следовательно, вы запустите:

git fetch susan

чтобы получить все из Git, который вы называете "Сьюзан", тогда:

git merge susan/master

для объединения с коммитом, который их Git вызывает master, который ваш Git вызывает susan/master.

(я рекомендую избегать git pull, по крайней мере, до тех пор, пока вы не будете хорошо знакомы с Git. Вместо этого сначала запустите git fetch, затем поэкспериментируйте, затем запустите вторую команду Git. Обратите внимание, что git pull просто запускает git fetch а затем немедленно запускает вторую команду Git, не давая вам возможности проверить, хорошая ли это идея.)

0 голосов
/ 09 января 2019

Это идентификатор редакции (я бы предположил). Вот с чем на самом деле работает git. Ветви и теги - это просто указатели на ревизии . Если вам удобнее работать с веткой, то создайте ветку для этой ревизии, поиграйте с ней и затем удалите ее

git branch temporary c3b039fb # create a branch on that revision
# play around with it doing what you want or need
git branch -D temporary # remote the branch when you are done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...