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
{{ message }}
Repository navigation
Commit 5c72783
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: book/10-git-internals/sections/refs.asc
+9-9Lines changed: 9 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -62,21 +62,21 @@ fdf4fc3344e67ab068f836878b6c4951e3b15f3d First commit
62
62
.Объекты в каталоге .git, а также указатели на вершины веток
63
63
image::images/data-model-4.png["Объекты в каталоге .git, а также указатели на вершины веток"]
64
64
65
-
При выполнении команды `git branch <branch>`, в действительности Git запускает команду `update-ref`, которая добавляет SHA-1хеш последнего коммита текущей ветки в файл с именем указанной ветки.
65
+
При выполнении команды `git branch <branch>` Git в действительности запускает команду `update-ref`, которая добавляет SHA-1-хеш последнего коммита текущей ветки в файл с именем указанной ветки.
66
66
67
67
[[r_the_head]]
68
68
==== HEAD
69
69
70
70
Как же Git получает хеш последнего коммита при выполнении `git branch <имя ветки>`?
71
71
Ответ кроется в файле HEAD.
72
72
73
-
Файл HEAD -- это символическая ссылка на текущую ветку.
73
+
Файл `HEAD` -- это символическая ссылка на текущую ветку.
74
74
Символическая ссылка отличается от обычной тем, что она содержит не сам хеш SHA-1, а указатель на другую ссылку.
75
75
76
-
В некоторых случаях файл HEAD может содержать SHA-1 хеш какого-либо объекта.
76
+
В некоторых случаях файл `HEAD` может содержать SHA-1 хеш какого-либо объекта.
77
77
Это происходит при извлечении тега, коммита или удалённой ветки, что приводит репозиторий в состояние https://git-scm.com/docs/git-checkout#_detached_head["detached HEAD"^].
78
78
79
-
Если вы заглянете внутрь HEAD, то увидите следующее:
79
+
Если вы заглянете внутрь `HEAD`, то увидите следующее:
80
80
81
81
[source,console]
82
82
----
@@ -92,18 +92,18 @@ $ cat .git/HEAD
92
92
ref: refs/heads/test
93
93
----
94
94
95
-
При выполнении `git commit` Git создаёт коммит, указывая его родителем объект, SHA-1 которого содержится в файле, на который ссылается HEAD.
95
+
При выполнении `git commit` Git создаёт коммит, указывая его родителем объект, SHA-1 которого содержится в файле, на который ссылается `HEAD`.
96
96
97
-
При желании, можно вручную редактировать этот файл, но лучше использовать команду `symbolic-ref`.
98
-
Получить значение HEAD этой командой можно так:
97
+
При желании можно вручную редактировать этот файл, но лучше использовать команду `symbolic-ref`.
Ссылки на удалённые ветки отличаются от веток (ссылок в `refs/heads`) тем, что они считаются неизменяемыми.
208
-
Это означает, что вы можете переключиться на любую из таких веток с помощью `git checkout`, но Git не установит HEAD на неё, а значит вы не сможете фиксировать свои изменения в ней с помощью `git commit`.
208
+
Это означает, что вы можете переключиться на любую из таких веток с помощью `git checkout`, но Git не установит `HEAD` на неё, а значит, вы не сможете фиксировать свои изменения в ней с помощью `git commit`.
209
209
Git воспринимает удалённые ветки как закладки на последние известные состояния веток на удалённых серверах.
0 commit comments