В чем разница между `git fetch origin` и` git remote update origin`?

115

В ответ на вопрос о извлечении одного коммита из репозитория git мне порекомендовали использовать git remote updateвместо git fetch. Я прочитал обе страницы руководства, но не могу сказать, что понял ни одну из них полностью.

Может кто - нибудь объяснить мне , как git fetch originи get remote update originвести себя по- другому?

Норман Рэмси
источник

Ответы:

133

При таком использовании нет никакой разницы.

remote update- это команда очень высокого уровня - она ​​поддерживает сгруппированные удаленные объекты ( remotes.<group> = <list>) и обновляет все пульты (кроме тех, у которых remote.<name>.skipDefaultUpdateустановлено значение), но не поддерживает какие-либо более конкретные параметры выборки. Однако под капотом он делает то же самое, что и выборка с параметрами по умолчанию.

Ответ, рекомендующий remote updateвместо git fetch, на самом деле рекомендовал его без удаленного имени, просто ради получения всего, а не только того, что указано в качестве аргумента. Это эквивалентно git fetch --all.

Я должен добавить оговорку, что выборка и удаленное обновление фактически не использовали один и тот же кодовый путь до версии 1.6.6.1 (выпущенной 23 декабря 2009 г.). Однако даже до этого они делали, по сути, одно и то же, просто используя другой код (возможно, в угловых случаях они вели себя немного по-другому, но я не могу придумать что-либо из головы).

Cascabel
источник
1
Очень интересно. +1. Если вы посмотрите примечания к выпуску Git (которые я собрал здесь: pastebin.com/LNhRhQS3 ), кажется, что только версия 1.7.0 (сразу после 1.6.6.2) позволяет использовать « git fetch --all» вместо « git remote update».
VonC
Ах, я на самом деле не проверял, когда fetch --allвошел. Я делаю все это только по вариациям git log --grep=...и git describe --containsв моем клоне git.git.
Cascabel
Хм, что ж, странно - commit 9c4a036b - это «Обучить параметр --all для 'git fetch'», а git describe --contains дает v1.6.6.1~1^2~9. (Тот же выпуск, что и изменение удаленного обновления, которое я упомянул в своем ответе, обновлено, чтобы добавить туда дополнительную версию выпуска). Может быть, просто поздно было вдаваться в примечания к выпуску?
Cascabel
@Jefromi: хороший способ откопать эту информацию, но я предпочитаю сначала взглянуть на примечания к выпуску и был разочарован отсутствием одной страницы для всех примечаний к выпуску, поэтому мой небольшой копипаст в pastebin.
VonC
@Jefromi: ну ... теперь мне нужно найти способ собрать все «что готовится в Git», чтобы понять, почему фиксация 9c4a036b не попала в официальную версию до 1.7;)
VonC