“Мерзавец выбирает - теги” включают “выборку мерзавца”?

Хорошим и простым вопросом - является функция "выборки мерзавца" строгое подмножество git fetch --tags?

Т.е. если я работаю git fetch --tags, есть ли когда-либо причина сразу работать git fetch прямо позже?

Что относительно git pull и git pull --tags? Та же ситуация?

253
задан Mark Fisher 20 August 2019 в 05:42
поделиться

3 ответа

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

В этом смысле git fetch --tags никоим образом не является надмножество git fetch . На самом деле все наоборот.

git pull , конечно, не что иное, как оболочка для git fetch ; git merge . Это' Мы рекомендуем вам привыкнуть к выполнению вручную git fetch ing и git merge ing, прежде чем переходить к git pull просто потому, что это поможет вам понять, что git pull делает это в первую очередь.

При этом связь точно такая же, как и с git fetch . git pull - это расширенный набор git pull --tags .

10
ответ дан 23 November 2019 в 02:51
поделиться

Примечание: этот ответ действителен только для git v1.8 и старше.

Большинство из этого было сказано в других ответах и ​​комментариях, но вот краткое объяснение:

  • git fetch извлекает все заголовки веток (или все, указанные в параметре конфигурации remote.fetch), все необходимые для них фиксации и все теги, доступные из этих ветвей. В большинстве случаев таким образом доступны все теги.
  • git fetch --tags выбирает все теги, все необходимые для них коммиты. Он не обновляет заголовки ветвей, даже если они доступны по тегам, которые были получены.

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

Это также не «вдвое медленнее», если вы не имеете в виду набор текста в командной строке, и в этом случае псевдонимы решают вашу проблему.

130
ответ дан 23 November 2019 в 02:51
поделиться

Я сам отвечу на этот вопрос

Я определил, что есть разница. «git fetch --tags» может ввести все теги, но не приведет к появлению новых коммитов!

Оказывается, это необходимо сделать, чтобы быть полностью «обновленным», т.е. воспроизвести «git pull» "без слияния:

$ git fetch --tags
$ git fetch

Жалко, потому что это вдвое медленнее. Если бы только "git fetch" имел возможность делать то, что он обычно делает, и вводят все теги.

48
ответ дан 23 November 2019 в 02:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: