Как проверить изменения в удаленном (исходном) Git-репозитории? - PullRequest
220 голосов
/ 25 марта 2010

Вопрос

Какие команды Git выполняют следующий рабочий процесс?

Сценарий

Я клонировал из репозитория и сделал несколько своих собственных коммитов в свой локальный репозиторий. Тем временем мои коллеги сделали коммиты в удаленном хранилище. Теперь я хочу:

  1. Проверьте, есть ли новые совершает от других людей на удаленный репозиторий, т.е. origin?

  2. Скажем, было 3 новых коммита на удаленный репозиторий с момента моего последнего потяните, я хотел бы коммиты удаленного репозитория, т.е. HEAD~3 с HEAD~2, HEAD~2 с HEAD~1 и HEAD~1 с HEAD.

  3. Узнав, что изменилось удаленно, Я хочу получать последние коммиты от остальных.

Мои выводы пока

Для шага 2: я знаю обозначение каретки HEAD^, HEAD^^ и т. Д. И нотацию тильды HEAD~2, HEAD~3 и т. Д.

Для шага 3: это, я думаю, просто git pull.

Ответы [ 8 ]

228 голосов
/ 25 марта 2010

Вы можете git fetch origin обновить удаленную ветку в вашем репозитории, чтобы она указала на последнюю версию. Для сравнения с пультом:

git diff origin/master

Да, вы также можете использовать символ каретки.

Если вы хотите принять удаленные изменения:

git merge origin/master
148 голосов
/ 24 октября 2013
git remote update && git status 

Нашел это в ответе на Проверьте, нужно ли тянуть в Git

git remote update для обновления ваших удаленных ссылок. Тогда ты можешь выполните одно из следующих действий, например:

  1. git status -uno сообщит вам, находится ли отслеживаемая вами ветка впереди, позади или разошлась. Если это ничего не говорит, местный и пульт одинаков.

  2. git show-branch *master покажет вам фиксации во всех ветвях, имена которых заканчиваются на master (например, master и origin / master).

Если вы используете -v с git remote update, вы можете увидеть, какие ветви обновлен, поэтому вам больше не нужны никакие дополнительные команды.

33 голосов
/ 25 марта 2010

Хороший способ получить синтетическое представление о том, что происходит в «происхождении»:

git remote show origin
18 голосов
/ 18 января 2017

Я просто использую

git remote update
git status

Последний затем сообщает, сколько коммитов позади моего локального. (если есть)

тогда

git pull origin master

, чтобы привести мой местный в актуальном состоянии:)

11 голосов
/ 30 марта 2010

Одно потенциальное решение

Благодаря решению Алана Хаггая Алави Я разработал следующий потенциальный рабочий процесс:

Шаг 1:

git fetch origin

Шаг 2:

git checkout -b localTempOfOriginMaster origin/master
git difftool HEAD~3 HEAD~2
git difftool HEAD~2 HEAD~1
git difftool HEAD~1 HEAD~0

Шаг 3:

git checkout master
git branch -D localTempOfOriginMaster
git merge origin/master
8 голосов
/ 07 сентября 2016

Мой обычный вопрос скорее "что-то новое или измененное в репо", так что что изменилось пригодится. Нашел здесь .

git whatchanged origin/master -n 1
1 голос
/ 30 октября 2017

git status не всегда показывает разницу между мастером и источником / мастером даже после выборки. Если вы хотите, чтобы комбинация git fetch origin && git status работала, вам нужно указать информацию отслеживания между локальной веткой и источником:

# git branch --set-upstream-to=origin/<branch> <branch>

Для основной ветки:

git branch --set-upstream-to=origin/master master
0 голосов
/ 25 июня 2018

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

я просто использую

git fetch origin

для получения удаленных изменений, а затем я просматриваю как локальные, так и ожидающие удаленные коммиты (и связанные с ними изменения) с помощью инструмента nice gitk (https://git -scm.com / docs / gitk ) с аргументом --all, например

gitk --all
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...