Неоднозначность в определении отрасли - PullRequest
0 голосов
/ 22 апреля 2020

Особенно в Git Pro (https://git-scm.com/book/en/v2), но также и в других источниках ветвь называется подвижной ссылкой на коммит. При фиксации текущая ветвь (обозначенная HEAD) автоматически продвигается вперед. Однако в других местах вы читаете такие вещи, как «последний коммит на ветке» или «верхушка ветки». Это означает, что 1) вы можете переместить существующую ветвь назад, чтобы указать на более ранний коммит, чем последний; и 2) что ветвь описывает более одного коммита, на который она может ссылаться. Для меня это звучит так, как будто концепция ветвления для новичков не имеет смысла, но я не знаю, как согласовать различные варианты использования. Если использование не указано c для команды. Например, git log может обрабатывать все фиксации в диапазоне двойной или тройной точки, тогда как git diff работает только на двух последних фиксациях в диапазоне.

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

Однако в других местах вы читаете такие вещи, как «последний коммит на ветке» или «верхушка ветки».

Неверно. Естественно так говорить, потому что люди думают о ветви как о последовательности коммитов, об истории. Но это не то, как git думает об этом, и вы не поймете git, если вы так думаете.

1) вы можете переместить существующую ветвь назад, чтобы указать на более ранний коммит, чем последний;

Правильно. Это называется сбросом.

2) что ветка описывает более одного коммита, на который она может ссылаться

Неверно. Ветвь - это имя, указывающее на один коммит, и это все, что есть. HEAD - это обычно указатель на одно из таких имен, а именно на то, над которым вы сейчас работаете, и, таким образом, он указывает на тот же коммит. Когда вы делаете коммит В обычном рабочем процессе edit-add-commit он указывает назад на коммит HEAD, а затем имя ветви (и HEAD) скользит вперед, указывая на новый коммит.

(То, что я только что сказал, будет более понятным, если вы также знаете, что такое коммит. Когда вы знаете, что такое коммит и что такое ветвь, вы знаете почти все, что нужно знать о git. остальные - это только некоторые глаголы, из которых сложнее всего слияние, а также механизм общения с другим git.)

0 голосов
/ 22 апреля 2020

Отрасль в git не такая конкретная, как в других системах контроля версий уровня предприятия. Вы можете думать об этом как о маркере, указывающем на «расходящийся» путь от мастера. По этой причине их также называют «легкий вес».

HEAD - это специальный маркер, указывающий на кончик «текущей» активной («извлеченной») ветви (движущейся вокруг). Но маркеры, созданные командой ветвления git checkout -b <branch-name>, не перемещаются. Они указывают на последний коммит (объект или блоб) в хранилище данных git.

Длинное чтение: красота ветвей происходит от того, как git хранит и связывает данные (https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...