Подтвердить что ты не робот

Разница между приводом git pull и git pull origin master

В чем разница между этими двумя командами?

git pull

и

git pull origin master
4b9b3361

Ответ 1

git pull script означает метод удобства для вызова git fetch, за которым следует git merge (или, с git pull --rebase, вызывая git fetch, за которым следует git rebase).

Первый дополнительный аргумент git pull сообщает ему, какой удаленный элемент должен выполнить операцию fetch:

git pull origin

например, означает выбор из origin. Если вы оставите это, git использует текущую ветвь remote:

$ git branch
* master
$ git config --get branch.master.remote
origin

Второй (и любые дополнительные) аргументы git pull указывают, к какой ветке или ветвям нужно объединиться. Это имена ветвей, найденные на пульте дистанционного управления. Например, предположим, что вы создаете новую ветвь feature2, которая отслеживает origin/feature:

$ git checkout -b feature2 origin/feature

Если вы хотите получить из origin, чтобы получить новые коммиты, добавленные в их ветвь feature, но объедините их в локальную ветвь feature2:

$ git pull origin feature

Если вы не укажете имя (ветки) ветки, git использует текущую ветвь merge:

$ git config --get branch.feature2.merge
feature

Обратите внимание, что если вы укажете несколько имен ветвей, git выполнит "слияние осьминогов". По моему опыту, это обычно удивляет людей в первый раз: они думают, что git pull remote br1 br2 будет запускать git fetch, а затем серию отдельных git merge -s на каждой ветки, но это не то, что происходит.

Ответ 2

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

где as git pull будет извлекать новые коммиты из всех отслеживаемых ветвей из удаленного пула (origin). вы также можете настроить имя удаленной сети и имя ветки в файле gitconfig.

git branch --set-upstream master origin/master

Это добавит следующую информацию в ваш файл gitconfig:

[branch "master"]
    remote = origin
    merge = refs/heads/master

теперь, когда вы говорите git pull, он будет извлекаться из основного источника.

Ответ 3

git pull origin master - это подробная форма, которая указывает как удаленный (origin), так и ветвь, чтобы извлечь из (master). Если вы не укажете, что Git применит поведение по умолчанию, которое объясняется в документации:

Часто люди используют git pull без указания каких-либо параметров. Традиционно это эквивалентно высказыванию git pull origin. Однако, когда конфигурация branch.<name>.remote присутствует, а на ветке <name>, это значение используется вместо источника.

[...]

Чтобы определить, какие удаленные ветки извлекаются (и, при необходимости, сохраняются в ветвях удаленного отслеживания), когда команда запускается без каких-либо параметров refspec в командной строке, запрашиваются значения переменной конфигурации remote.<origin>.fetch, и если нет ни одного файла $GIT_DIR/remotes/<origin>, и используются его строки Pull:.