git fetch
git fetch
захватывает изменения из удаленного репозитория и помещает их в базу данных объектов вашего репозитория. Он также выбирает ветви из удаленного хранилища и сохраняет их как ветви удаленного отслеживания .
Когда вы выбираете, git сообщает вам, где он хранит каждую ветку в удаленном репозитории, которую он выбирает. Например, вы должны увидеть что-то вроде
7987baa..2086e7b master -> origin/master
при получении. Это означает, что «origin / master» хранит, где «master» находится в хранилище «origin».
Если вы изучите файл .git/config
, вы увидите следующий фрагмент:
[remote "origin"]
url = git://git.example.com/repo.git
fetch = +refs/heads/*:refs/remotes/origin/*
Это (среди прочего) означает, что любая ветвь 'A' ('refs / head / A') в удаленном источнике (хранилище, из которого вы клонировали) будет сохранена как 'origin / A' ('refs / remotes / origin / А ').
git log .. происхождение / мастер
Как вы видите, origin / master - это master в origin. Если вы используете ветку 'master' (по умолчанию), то git log ..origin/master
, что эквивалентно git log HEAD..origin/master
, которое, когда на ветке 'master' эквивалентно git log master..origin/master
, перечислит все коммиты, которые находятся на ветке 'master' в удаленный репозиторий и не находится в локальной ветке 'master', где вы выполняете свою работу.
Более общей версией в современном git (при условии, что существует информация о восходящем / отслеживающем) было бы просто использовать
$ git log ..@{u}
(Здесь @{u}
является синонимом @{upstream}
, см. gitrevisions manpage).
git merge origin / master
git merge
используется для соединения двух строк истории. Если одна из сторон не выполняла никакой работы с момента последней точки ветвления (начиная с базы слияния), ситуация может быть либо fast-forward (ветвь, в которой вы находитесь, просто обновляется до кончика ветви, которой вы являетесь слияние), или актуальный (нет ничего нового для слияния, и ветка, в которой вы находитесь, остается неизменной).
git fetch
, за которым следует git merge origin/master
, когда в ветке 'master' эквивалентно выдаче
$ git pull
Если вы не хотите объединяться, вам не нужно. Обратите внимание, что вы можете использовать, например, git reset --hard HEAD@{1}
чтобы вернуться назад и отбросить результат git pull
, если вам это не нравится.