Как проверить изменения в удаленном (исходном) хранилище 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