origin
- имя удаленного (местоположения), оно похоже на путь. Это имя по умолчанию для «оригинального» хранилища, которое вы клонируете. Но название довольно условно. Это и название ветви "master" стали стандартными именами, но их также можно назвать "default-repo" и "default-branch".
Ветвь (локальная или удаленная) - это указатель на коммит. По сути, в папке .git
каждая ветвь будет иметь файл с именем ветки в качестве имени файла и хеш-коммитом, на который он указывает как содержимое файла. Вы можете найти все свои местные филиалы в .git/refs/heads/
.
Когда вы отправляете ветку на удаленный компьютер (например, origin
), он создаст этот файл указателя в папке .git
на удаленном компьютере и создаст в вашем клоне аналогичный файл, отражающий знания вашего клона о пульт. Это представление удаленных ветвей живет в .git/refs/remotes/<remote-name>/
Затем, что касается "контрагентов", о которых вы говорите, любая ваша локальная ветвь может (но не обязана) быть связана с другой ветвью (удаленной или нет). Когда локальная ветка связана с удаленной, вы можете увидеть это, например, в файле .git/config
вашего клона, в разделе, подобном:
[branch "test-padawin"]
remote = origin
merge = refs/heads/test-padawin
Связывание ветки с пультом дает некоторую легкость при вытягивании и толкании, так как тогда вы сможете просто запустить git push
или git pull
, не упоминая, куда тянуть или толкать.
В двух словах, ветвь - это закладка для определенного коммита, и для облегчения работы и связи между клонами репо они могут отслеживать свой «эквивалент» в других клонах / репо.