Реклама

[Перевод] origin master или origin/master: как Git хранит ветки в обычном словаре «ключ — значение»

#Перевод #Почему #Алексей #Кладов #Разворачиваем
[Перевод] origin master или origin/master: как Git хранит ветки в обычном словаре «ключ — значение»

Почему в git fetch origin master пробел, а в git switch -c my-feature origin/master слеш? Алексей Кладов (matklad) много лет пользовался Git, представляя его контентно-адресуемой базой коммитов, и только недавно разглядел рядом с ней обычное изменяемое хранилище «ключ — значение» — ссылки в .git/refs. Разворачиваем сокращения fetch до полной формы refs/heads/master:refs/remotes/origin/master, разбираемся, зачем Git держит у себя копию чужих веток и почему git switch -c refs/heads/x создаёт refs/heads/refs/heads/x. Читать далее

Недавно я заметно поправил свою ментальную модель Git. Возьмём две команды:

$ git fetch origin master

$ git switch -c my-feature origin/master

Понимаете, почему в одной написано origin master, а в другой origin/master? Я — нет, ещё пару недель назад не понимал!