Мне нужно разъяснение по Git Local и Git Remote - PullRequest
0 голосов
/ 17 мая 2018

В репозитории git, над которым я работаю, есть ветки для каждой версии программного обеспечения. 3.1.1, 3.1.5, 3.5.2 и т. Д. Существуют также такие ветви, как разработка, которые также имеют происхождение / развитие аналога происхождения.

Я заметил, что ветви версий (среди прочих ветвей) не имеют аналога источника.

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

Причина, по которой я это заметил, в том, что я делал rev-parse для локальной версии и сравнивал ее с удаленной. Однако я не могу этого сделать, если нет происхождения.

Итак, мой вопрос: как обстоят дела с филиалами, которые не имеют аналога происхождения? Я могу подтолкнуть их к источнику, используя git push origin <branch>, но я хотел бы понять разницу, прежде чем сделать это.

1 Ответ

0 голосов
/ 17 мая 2018

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, не упоминая, куда тянуть или толкать.

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

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