префиксы github remotes/origin [дубликаты]

Я заметил, что по какой-то причине некоторые из моих веток git имеют префикс «remotes/origin»:

BZ9
 * master   
 remotes/origin/BZ8   
 remotes/origin/BZ9   
 remotes/origin/HEAD -> origin/master   
 remotes/origin/junit1   
 remotes/origin/master

Чем отличается, например, ветка "remotes/origin/BZ9" от ветки BZ9? Очевидно, что они оба происходят из одной и той же концептуальной ветви, но git считает их разными.


person jayunit100    schedule 19.02.2013    source источник


Ответы (1)


В вашем списке «BZ9» и «master» — это локальные ветки, которые вы можете свободно перемещать, обновлять и удалять. Когда вы находитесь в одной из этих ветвей и выполняете фиксацию, ветвь обновляется, чтобы указать на вашу последнюю фиксацию.

Имена с префиксом remotes/origin, которые появляются при вводе git branch -a, тем не менее, аналогичны ветвям, но вы можете думать о них как о «только для чтения». Эти ветки вы не контролируете напрямую, они автоматически устанавливаются при извлечении и не изменятся до тех пор, пока вы снова не извлечете (или не извлечете).

Это связано с тем, что в отличие от ваших локальных веток, которые отслеживают вашу локальную разработку, удаленные/исходные ветки отслеживают удаленную разработку на сервере, откуда вы извлекаете («источник»).

Например, «remotes/origin/junit1» говорит: «В последний раз, когда git извлекался из репозитория удаленного источника, там была ветка с именем junit1, которая указывала на этот хэш коммита».

Вы можете проверить эту удаленную ветку, как и любую другую, но когда вы фиксируете эту ветку, указатель ветки не обновляется, потому что он не предназначен для отслеживания вашего локального прогресса, он предназначен для отслеживания прогресса удаленного репо.

Ваш локальный прогресс отслеживается вашими локальными ветками, которые вы создаете, обновляете и удаляете по мере необходимости.

Точно так же, если кто-то другой клонирует из вашего репозитория, то при получении от вас у него будет две удаленные ветки от вас: «remotes/origin/BZ9» и «remotes/origin/master». Другими словами, ваши локальные ветки становятся удаленными/исходными ветвями для кого-то нижестоящего от вас.

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

person Magnus    schedule 19.02.2013