2013-07-05 3 views
4

Почему git pull получить все ветки из хранилища, но git pull origin master нет? Я обнаружил это с трудом. Это единственное функциональное различие между этими двумя командами?Почему «git pull» получает все ветки из репозитория, но «git pull origin master» нет?

не

Объяснение, как это говорит мне ничего:

git pull = git fetch origin + git merge origin/master

git pull origin master = git fetch origin master + git merge FETCH_HEAD

ответ

14

Последняя команда, git pull origin master, говорит мерзавца, чтобы принести и объединить специфически master ветвь (от пульта с именем origin, чтобы быть более точным).

git pull извлекает обновления для всех локальных ветвей, которые отслеживают удаленные ветви, а затем объединяет текущую ветку.

+0

Так что «выборки обновлений для всех локальных ветвей» - это разница. Если он извлекает обновления для всех локальных ветвей без слияния, что он на самом деле делает? – Prostak

+3

'.git' в локальном клоне содержит все объекты, которые вы уже получили из репозитория удаления. 'git fetch' - это, в основном, команда получения любых новых объектов с пульта. Таким образом, все другие операции, включая слияние (но исключая «git push», конечно), работают локально (и не требуют сетевого подключения). – esycat

6

От documentation of git pull:

git pull работает git fetch с заданными параметрами и вызывает GIT слияния, чтобы объединить извлекаемые ветви головы в текущей ветви

При вызове git fetch без аргументов, следующие

Выбирает названные главы или метки из одного или нескольких других re а также объекты, необходимые для их завершения.
git fetch [выбирает] из (...) одного имени репозитория (...)

При добавлении аргументов, только указанных отдаленные и головка (= ответвления/метки/фиксации/...) извлекаются, а затем объединяются.

+0

«Выбирает имена глав или тегов из одного или нескольких других репозиториев» ... hmm. .. Я думал, что есть только одна ГОЛОВА, и она всегда находится на главной ветке? Что это означает «голова»? – Prostak

+1

'HEAD' - текущая фиксация. 'head' - это термин, означающий в основном« ветви и метки ». – phihag

+1

Термин 'HEAD' используется в основном для ссылки на последнюю фиксацию в вашей текущей ветке. Но, судя по всему, каждая ветка и тег в любой момент времени имеет свою последнюю фиксацию, иначе подсказку. 'HEADS' - это термин, который обычно используется для обозначения всех этих советов. – esycat

Смежные вопросы