Что происходит, когда я делаю git pull origin master в ветке разработки?

предположим, у меня есть частная ветвь темы под названием develop с 2 коммитами впереди master.

Что значит git pull origin master делать?

вытащить все из удаленного мастера в локальной разработке и объединить его? Вытащить все из местной главной ветви и объединить?

и есть ли способ обновить master от develop без git checkout master первый?

2 ответов


git pull origin master вытягивает главную ветвь из удаленного источника, называемого origin, в текущую ветвь. это влияет только на вашу текущую ветвь, а не на вашу локальную главную ветвь.

это даст вам историю, выглядящую примерно так:

- x - x - x - x (develop)
   \         /
    x - x - x (origin/master)

Вашу локальную ветку master не имеет значения в этом. git pull по существу представляет собой комбинацию git fetch и git merge; он извлекает удаленную ветвь, а затем сливает ее в текущую ветвь. Это слияние, как и любое другое; это не делает ничего волшебного.

если вы хотите обновить локальную главную ветку, у вас нет выбора, кроме как проверить ее. Невозможно объединить в ветку, которая не проверена, потому что Git нужно дерево работы для выполнения слияния. (В частности, это абсолютно необходимо для того, чтобы сообщать о конфликтах слияния и разрешать их.)

если вы случайно знаете, что втягивание в master будет быстрым (т. е. у вас нет коммитов в вашем локальном master branch, которые не находятся в Мастере origin) , вы можете обойти,как описано в этот ответ.


после фиксации изменений в ветке с помощью

git add -A
git commit -m <message>

затем вы можете сделать:

git pull origin master

в вашу ветку, и это будет держать ваши коммиты поверх мастер-тяги. Теперь ваша ветка будет даже с master + вашими коммитами сверху. Итак, теперь вы можете сделать:

git push

и git будет толкать ваши изменения вместе с master commits в вас ветку. Затем вы можете легко объединить это в master на Github.