Разница между git pull. мастер vs git мастер слияния
Не имея удаленного репозитория, только один локальный репозиторий с двумя ветвями.
$ 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.
Я действительно не понимаю, почему это полезно, как указано в этой man-странице.
Ответы
Ответ 1
git pull . master
извлекает из текущего репозитория (no-op) и затем выполняет что-то, чтобы обновить текущую ветвь с помощью master
. Это может быть слияние, но это может быть также перебаза в зависимости от настройки конфигурации pull.rebase
или branch.master.rebase
.
В случае слияния на стратегию слияния my влияет pull.twohead
.
git merge master
всегда будет объединять мастер с стратегией слияния по умолчанию.
Ответ 2
pull
представляет собой комбинационную команду fetch
, за которой следует merge
. По умолчанию или разумным параметрам он синхронизирует вашу текущую ветвь.
С параметрами, как в вопросе, большая часть его работы саботируется. часть извлечения отменена, чтобы использовать текущее репо, поэтому оно пропущено, и вы явно спрашиваете, как мастер переполняет FETCH_HEAD.
Таким образом, в этой форме я считаю, что они идентичны (и я тоже ставил бы первую категорию безнравственности).
Ответ 3
Единственное различие - во втором случае (git merge master
) оно будет сливаться с не свежими данными, а с данными из вашего последнего удаленного обновления. Итак, если вы только что сделали fetch
(или git remote update
) - они работают одинаково, но если вы недавно обновили локальный репозиторий, он будет сливаться со старым снимком.
Не уверен, что период в git pull . master
является правильным синтаксисом...