Однако в других местах вы читаете такие вещи, как «последний коммит на ветке» или «верхушка ветки».
Неверно. Естественно так говорить, потому что люди думают о ветви как о последовательности коммитов, об истории. Но это не то, как git думает об этом, и вы не поймете git, если вы так думаете.
1) вы можете переместить существующую ветвь назад, чтобы указать на более ранний коммит, чем последний;
Правильно. Это называется сбросом.
2) что ветка описывает более одного коммита, на который она может ссылаться
Неверно. Ветвь - это имя, указывающее на один коммит, и это все, что есть. HEAD - это обычно указатель на одно из таких имен, а именно на то, над которым вы сейчас работаете, и, таким образом, он указывает на тот же коммит. Когда вы делаете коммит В обычном рабочем процессе edit-add-commit он указывает назад на коммит HEAD, а затем имя ветви (и HEAD) скользит вперед, указывая на новый коммит.
(То, что я только что сказал, будет более понятным, если вы также знаете, что такое коммит. Когда вы знаете, что такое коммит и что такое ветвь, вы знаете почти все, что нужно знать о git. остальные - это только некоторые глаголы, из которых сложнее всего слияние, а также механизм общения с другим git.)