Как проверить изменения в удаленном (исходном) хранилище Git?

Вопрос

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

Сценарий

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

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

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

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

Мои результаты до сих пор

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

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

Ответ 1

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

git diff origin/master

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

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

git merge origin/master

Ответ 2

git remote update && git status 

Обнаружено это в ответе Проверить, требуется ли тянуть в Git

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

  • git status -uno расскажет вам, находится ли ветка, которую вы отслеживаете, впереди, позади или расходилась. Если он ничего не говорит, локальные и удаленные - то же самое.

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

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

Ответ 3

Хороший способ синтетического представления о том, что происходит с "происхождением":

git remote show origin

Ответ 4

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

Благодаря Alan Haggai Alavi solution Я придумал следующий потенциальный рабочий процесс:

Шаг 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

Ответ 5

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

git whatchanged origin/master -n 1

Ответ 6

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

git remote update
git status

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

затем

git pull origin master

чтобы обновить мой локальный язык:)

Ответ 7

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

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

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

git branch --set-upstream-to=origin/master master