Что происходит, когда я делаю 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.