В чем разница между этими двумя командами?
git pull
и
git pull origin master
В чем разница между этими двумя командами?
git pull
и
git pull origin master
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 на каждой ветки, но это не то, что происходит.
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, он будет извлекаться из основного источника.
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:.