2013-06-27 3 views
15

Не имея удаленного репозитория, только один локальный репозиторий с двумя ветвями.Разница между git pull. master vs git merge master

$ git branch -a 
    master 
* devel 

ли следующие команды в этом контексте то же самое/синоним?

$ git pull . master 

и

$ git merge master 

UPDATE:

$ git help pull дает следующую информацию

SYNOPSIS 
    git pull <options> <repository> <refspec>... 

DESCRIPTION 
    ... 
    Note that you can use . (current directory) as the <repository> to pull 
    from the local repository — this is useful when merging local branches 
    into the current branch. 

Я на самом деле не понимаю, почему это полезно, как указано в этой страницы руководства.

+1

no git-merge - Присоединяйтесь к двум или более историям развития вместе. И git-pull - Fetch from и слияние с другим репозиторием или локальным ветвием – cptnk

ответ

8

git pull . master извлекает из текущего репозитория (не-ор), а затем будет делать что-то, чтобы довести текущую ветку до настоящего времени с master. Это может быть слияние, но это может быть также перебалансировка в зависимости от настройки конфигурации pull.rebase или branch.master.rebase.

В случае слияния стратегия слияния зависит от pull.twohead.

git merge master всегда будет объединять мастер с стратегией слияния по умолчанию.

11

pull является комбинационной командой, fetch, а затем merge. По умолчанию или разумным параметрам он синхронизирует текущую ветку.

С параметрами, как в вопросе, большая часть его работы саботируется. часть извлечения отменена, чтобы использовать текущее репо, поэтому оно пропущено, и вы явно просите мастера перекрыть FETCH_HEAD.

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

+0

Это будет так же в любом случае, так как пульт «.», Нет? – jszakmeister

+0

, поскольку я указал, что нет удаленного хранилища. поэтому 'fetch' ничего не делает. Можете ли вы настроить свой ответ; Я доволен упоминанием, что обычно git pull эквивалентно git fetch & git merge. – Hotschke

2

Единственное отличие - во втором случае (git merge master) он будет сливаться не с свежим данными, а с данными вашего последнего удаленного обновления. Итак, если вы только что сделали fetch (или git remote update) - они работают одинаково, но если вы обновили локальный репозиторий давным-давно - он будет сливаться со старым снимком.

Не уверен, что период в git pull . master является правильным Синтаксисы ...

+0

он тоже меня озадачил, но, похоже, работает, пропуская часть извлечения –