Ответ 1
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/heads/A" ) в удаленном источнике (репозиторий, который вы клонировали) будет сохранена как "origin/A" ("refs/remotes/origin/А ').
git log..origin/master
Как вы видите, "origin/master" - это "master" в начале. Если вы находитесь в (по умолчанию) ветке "master" , то git log ..origin/master
, что эквивалентно git log HEAD..origin/master
, которое, когда на ветке "master" эквивалентно git log master..origin/master
, будет перечислять все фиксации, которые находятся в ветки "master" в удаленный репозиторий и не находятся в локальной ветке "master" , где вы выполняете свою работу.
Более общая версия в современном git (при условии, что существует информация о восходящем/отслеживании) будет использовать просто
$ git log [email protected]{u}
(Здесь @{u}
является синонимом @{upstream}
, см. gitrevisions manpage).
git merge origin/master
git merge
используется для объединения двух строк истории. Если одна из сторон не выполняла никакой работы с последней точки ветвления (с базы слияния), ситуация либо перемотка вперед (ветка, на которой вы находитесь, просто обновляется до конца ветки, которую вы объединяете) (нет ничего нового для слияния, и ветка, в которой вы находитесь, остается неизменной).
git fetch
, за которым следует git merge origin/master
, когда на ветке "master" эквивалентно выдаче
$ git pull
Если вы не хотите сливаться, вам не нужно. Обратите внимание, что вы можете использовать, например. git reset --hard [email protected]{1}
вернуться и отменить результат git pull
, если вам это не нравится.