Что происходит, когда я делаю git pull origin master в ветке разработки? - PullRequest
53 голосов
/ 05 января 2012

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

Что делает git pull origin master?

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

И есть ли способ обновить мастер из разработки без git checkout master первым?

Ответы [ 2 ]

81 голосов
/ 05 января 2012

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

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

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

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

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

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

4 голосов
/ 14 октября 2016

Как только вы фиксируете свои изменения в своей ветке, используя

git add -A
git commit -m <message>

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

git pull origin master

в вашу ветку, и это будет держать ваши коммиты поверх мастеравытащить.Ваша ветка теперь будет даже с мастером + ваши коммиты сверху.Итак, теперь вы можете сделать:

git push

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

...