В чем разница между этими двумя командами?
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:
.